form select multiple 某个字段是数组_Hive取非Group by字段数据的方法
遇到這么一個(gè)需求,輸入數(shù)據(jù)為一個(gè)ID對應(yīng)多個(gè)name,要求輸出數(shù)據(jù)為ID是唯一的,name隨便取一個(gè)就可以。
執(zhí)行以下hive
SELECTsid,??class_idFROM??table2ievGROUP?BY?sid?;會(huì)報(bào)錯(cuò):
SELECT查了一下,HIVE有這么一個(gè)函數(shù)collect_set,類似于mysql的group_concat函數(shù),把每個(gè)分組的其他字段,按照逗號進(jìn)行拼接,得到一個(gè)最終字符串:
collect_set(col)
返回類型:array
解釋:返回一個(gè)去重后的對象集合
將上述的QL語句改一下:
select?sid,collect_set(class_id)?from?table2?group?by?sid;結(jié)果是這樣的:
[11,12,13]
[11,14]
[12,15]
[12,13]
[16,14]
[13,15]
這個(gè)時(shí)候,我們就可以針對第二列做一些計(jì)數(shù)、求和操作,分別對應(yīng)到Hive的聚合函數(shù)count、sum。
對應(yīng)到本文的目的,直接從數(shù)組獲取第一個(gè)元素就達(dá)到目的了,這樣做:
select?sid,collect_set(class_id)[0]?from?table2?group?by?sid;結(jié)果如下:
1 11
2 11
3 12
4 12
5 16
713
總結(jié):
參考文章:http://wangjunle23.blog.163.com/blog/static/117838171201310222309391/
本文地址:http://www.crazyant.net/1600.html
總結(jié)
以上是生活随笔為你收集整理的form select multiple 某个字段是数组_Hive取非Group by字段数据的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux怎样自制库_linux 下动态
- 下一篇: ant接口自动化 junit_ant 学