不执行具有多个联接的配置单元查询

e37o9pze  于 2021-06-29  发布在  Hive
关注(0)|答案(1)|浏览(301)

我编写了一个配置单元查询来计算包含整数值(包括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]

zbdgwd5y

zbdgwd5y1#

你不必那么做
只需使用Hive的百分位自定义项

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

相关问题