函式 Hive 行轉列 和 列轉行

2021-08-19 21:23:50 字數 842 閱讀 6725

在hive實際開發過程中,我們會遇到「行轉列」和「列轉行」的場景。比如:

1、 需要取「訂單號」對應的所有商品「sku號」,商品「sku號」放在一列,即從table1查詢出table2;

2、 當商品「sku號」均在一列的時候,需要查詢每個「sku號」對應的「訂單號」,即從table2查詢出table1。

實現方法:

1、從table1查詢出table2:

select

sale_ord_id

,concat_ws(',',collect_set(item_sku_id))as item_sku_id

from table1

where dt=sysdate(-1)

group by sale_ord_id

關鍵點:使用到****concat_ws()和collect_set()

2、從table2查詢出table1:

select

sale_ord_id

,sku_id

from table2

lateral view explode(split(item_sku_id,',')) adtable as sku_id

where dt=sysdate(-1)

關鍵點:使用到****explode()、split()和lateral view

hive 列轉行和行轉列

1.假設我們在hive中有兩張表,其中一張表是存使用者基本資訊,另一張表是存使用者的位址資訊等,表資料假設如下 user basic info id name1a 2b3c 4duser address name address aadd1 aadd2 badd3 cadd4 dadd5 id na...

hive 列轉行和行轉列

1.假設我們在hive中有兩張表,其中一張表是存使用者基本資訊,另一張表是存使用者的位址資訊等,表資料假設如下 user basic info idname1a 2b3c 4duser address name address aadd1 aadd2 badd3 cadd4 dadd5 我們可以看到...

Hive行轉列和列轉行

優點 好理解 缺點 多次select同一張表,造成計算量成倍增加 冗餘,單個select條件複雜後會變得較難維護。concat height height,weight weight,age age as value select id,height as label,height as value...