2015-05-13 161 views
0

我是Hive的noobie。我的問題是爲什麼我們需要在執行GROUP BY時使用collect_set(col)?GROUP BY語句HiveQL

從songlist GROUP BY歌手中選擇歌手,collect_set(歌曲);

真的很感謝任何幫助。提前致謝!

回答

1

Dude !!這是相反的:)

所有求和/聚合的東西需要一個組。 在您的查詢中,當您嘗試執行collect_set(col)時,您需要一個group by。

所以在你的情況下,你試圖將歌手唱的所有歌曲分組。因此,由collect_set組(歌曲)

+0

感謝您的迴應帕夏!我有另外幾個問題:)這兩個陳述之間有什麼區別。從songlist GROUP BY歌手中選擇歌手,歌曲;並從歌曲列表GROUPBY歌手中選擇歌手,collect_set(歌曲);另外爲什麼第一條語句會導致錯誤。 – Holmes

+0

從songlist GROUP BY歌手中選擇歌手,歌曲; 顯然,這是錯誤的。 a。 select中的所有列都需要按照語句分組。所以在你的情況下,你還需要分組歌曲中的歌曲列。另外,如果你像這樣構造查詢,輸出將會與歌手和歌曲截然不同,而不會與collect_set查詢的結果相同。 –

+0

謝謝兄弟! :)欣賞它! – Holmes