2016-04-06 4 views
2

私はいくつかの列をグループ化し、group by句の列のサブセットであるパー​​ティションに対して特定の列に集約したいというユースケースを持っています。ハイブでの分析クエリの制限

シナリオ例

テーブルスキーマ:

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; 

しかしハイブが列valueはの一部ではないと文句を言い:

(id int, category1 string, category2 string, category3 string, value int)

は、私は次のクエリを実行したいですgroup by句。

ハイブでこれを達成する別の方法はありますか?

ご意見をいただければ幸いです。ありがとう!

答えて

0

あなたは何をしようとしているのかわかりません。 cat1には2つの異なる値があり、cat2には3があり、cat3には5があります。cat1に2行、cat2に3行、cat3に5行を返すようにハイブ(または彼の友人)に求めています。さらに、これらをデータセットにどのようにマッチさせるかは、ロジックimhoを超えています。しかし、どうして労働組合を使わないのがいいですか?

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