一、簡介
Hive是一個基於Hadoop的數據倉庫工具,它可以將結構化數據映射為一張數據庫表,並提供了類SQL查詢的功能。collect_set是其中一個聚合函數,它可以對一組數據進行去重並且返回一個集合,常用於處理分組統計或去重查詢。
二、語法
collect_set語法如下:
collect_set(expr)
collect_set(DISTINCT expr)
其中,expr是一條SQL語句的表達式,DISTINCT表示去重。
三、用法舉例
1.對數據進行去重
對於以下數據表:
name age city
小明 18 北京
小紅 18 北京
小剛 20 上海
小剛 22 北京
使用collect_set函數,可以對city字段進行去重操作:
SELECT collect_set(city) FROM student_info;
查詢結果如下:
["北京", "上海"]
可以看到,collect_set去重後得到了城市北京和上海。
2.將分組結果返回為集合
對於以下數據表:
name age city
小明 18 北京
小紅 18 北京
小剛 20 上海
小剛 22 北京
我們想要計算每個人所在的城市集合,可以使用collect_set函數進行分組統計:
SELECT name, collect_set(city) FROM student_info GROUP BY name;
查詢結果如下:
name collect_set(city)
小明 ["北京"]
小紅 ["北京"]
小剛 ["上海", "北京"]
可以看到,函數將每個人所在的城市集合進行了統計。
3.去重後排序
如果需要對去重後的結果進行排序,可以使用sort_array函數,例如:
SELECT sort_array(collect_set(city)) FROM student_info;
查詢結果如下:
["上海", "北京"]
sort_array函數將集合元素進行排序,得到了北京和上海的正確順序。
四、注意事項
collect_set函數為去重函數,並不會對數據進行排序。如果需要對集合進行排序,需要使用sort_array函數。
五、總結
本文介紹了Hive中collect_set函數的用法,從語法、用例等方面對其進行了詳細的闡述。在實際數據處理過程中,collect_set經常被用於去重和分組統計,並配合sort_array函數進行排序。
原創文章,作者:SPVSR,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/361530.html