日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

form select multiple 某个字段是数组_Hive取非Group by字段数据的方法

發(fā)布時(shí)間:2024/10/8 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 form select multiple 某个字段是数组_Hive取非Group by字段数据的方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

遇到這么一個(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é):

  • Hive不允許直接訪問非group by字段;
  • 對于非group by字段,可以用Hive的collect_set函數(shù)收集這些字段,返回一個(gè)數(shù)組;
  • 使用數(shù)字下標(biāo),可以直接訪問數(shù)組中的元素;
  • 參考文章:http://wangjunle23.blog.163.com/blog/static/117838171201310222309391/

    本文地址:http://www.crazyant.net/1600.html

    總結(jié)

    以上是生活随笔為你收集整理的form select multiple 某个字段是数组_Hive取非Group by字段数据的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。