Hive 中分析查询的限制
Posted
技术标签:
【中文标题】Hive 中分析查询的限制【英文标题】:Restrictions with analytic queries in Hive 【发布时间】:2016-04-06 10:44:17 【问题描述】:我有一个用例,我想在几个列上进行分组并在特定列上聚合到分区上,这些分区是group by
子句中列的子集。
示例场景
表架构:
(id int, category1 string, category2 string, category3 string, value int)
我要执行以下查询:
select sum(value) over (partition by category1) as c1_sum, sum(value) over (partition by category2) as c2_sum, sum(value) over (partition by category3) as c3_sum from <table_name> group by category_1, category2, category3;
但是 hive 抱怨 value
列不是 group by
子句的一部分。
在 hive 中是否有不同的方法来实现这一点?
任何建议将不胜感激。谢谢!
【问题讨论】:
【参考方案1】:我不确定你正在尝试什么可以做到。假设 cat1 有 2 个不同的值, cat2 有 3 个,而 cat3 有 5 个。您要求 hive(或他的任何朋友)在 cat1 上返回 2 行,在 cat2 上返回 3 行,在 cat3 上返回 5 行。此外,如何将这些匹配到数据集中超出了任何逻辑恕我直言。但是为什么不使用类似的工会
Select category1 as cat, sum (value) as sumCat
from tblName
group by category1
Union
Select category2 as cat, sum (value) as sumCat
from tblName
group by category2
Union
Select category3 as cat, sum (value) as sumCat
from tblName
group by category3
【讨论】:
以上是关于Hive 中分析查询的限制的主要内容,如果未能解决你的问题,请参考以下文章