Hive
行轉列和列轉行
表1:cityInfo
cityname regionname
上海 四川北路
上海 虹梅路
上海 音樂學院
上海 徐家彙
上海 陸家嘴
上海 古北
北京 東四
北京 複興門
北京 新街口
北京 地安門
表2:cityInfoSet
cityname address_set
上海 四川北路,虹梅路,音樂學院,徐家彙,陸家嘴,古北
北京 地安門,複興門,東四,新街口
表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;