Hive-行轉列和列轉行

Hive

行轉列和列轉行

  • 表1:cityInfo
cityname regionname
上海 四川北路
上海 虹梅路
上海 音樂學院
上海 徐家彙
上海 陸家嘴
上海 古北
北京 東四
北京 復興門
北京 新街口
北京 地安門
  • 表2:cityInfoSet
cityname regionname
上海 四川北路,虹梅路,音樂學院,徐家彙,陸家嘴,古北
北京 地安門,復興門,東四,新街口

表1和表2的結構如上所示。如何在 hive 中使用 Hql 語句對錶1和表2進行互相轉化呢?

行轉列

表1=>表2 可以使用 hive 的內置函數 concat_ws() 和 collect_set()進行轉換:

執行代碼如下所示:

select cityname,concat_ws(',',collect_set(regionname)) as address_set from cityInfo group by cityname;

列轉行

表2=>表1 可以使用 hive 的內置函數 explode()進行轉化。代碼如下:

select cityname, region from cityInfoSet  lateral view explode(split(address_set, ',')) aa as region;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章