Hive中的分析查询限制

时间:2016-04-06 10:44:17

标签: hadoop hive hiveql

我有一个用例,我希望在多个列上进行分组,并在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子句的一部分。

在蜂巢中有没有不同的方法来实现这一目标?

任何建议都将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定你的尝试是做什么的。假设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