我写了一个Hive查询来计算包含整数值(包括0)的表的多列上的33和66百分位数。
为了过滤异常值,我在计算百分位之前添加了过滤器> 0.
我有46列,每列计算33和66百分位,列上有> 0过滤器。
然后我将这些结果加入到一个包含33%和66%这些列的表中。
我的问题是查询没有执行。我尝试用2列执行,它工作正常,但不适用于这么多的连接。有人可以建议另一种方式。
数据如下所示:
C1| C2| C3
---------------
0 | 2 | 3
1 | 0 | 2
2 | 0 | 0
对于C1,数据将为[1,2];对于C2 - > [2];对于C3 - >并[3,2]
答案 0 :(得分:0)
你不需要那样做
只使用hive的百分位udf
select percentile(C1,0.33),.....,percentile(C46,0.33) from table
UNION ALL
select percentile(C1,0.66),.....,percentile(C46,0.66) from table
这为您提供了一个包含46列的表,第一行表示每列的第33百分位,第二行表示每列的第66百分位
或者你可以做
select percentile(C1,0.33),.....,percentile(C46,0.33) , percentile(C1,0.66),.....,percentile(C46,0.66) from table