hive中行轉列 列轉行的實現

2021-09-11 17:02:27 字數 3541 閱讀 2016

行轉列實現:

表資訊:

場景一:使用concat_ws和collect_set函式

說明:collect_set函式可以返回乙個array型別。

concat_ws函式可以拼接陣列,如下:

場景二:有時候如果需要對指標字段求和,則上述sql改寫成如下:

場景三:使用str_to_map和explode函式以及lateral view

說明:str_to_map可以將字串轉換為map,如下:

explode是表生成函式(udtf),入參是乙個陣列或者是map,將其迭代,返回多行結果,如下:

lateral view可以將一列拆分成多行資料。

列轉行實現:

利用上面的sql,建立一張表:

create table test_colrow as

select dt_m, adt.data_type, adt.data from test_rowcol lateral view

explode(str_to_map(concat('vaild_num=',vaild_num,'&unvaild_num=',unvaild_num),'&','=')) adt as data_type, data;

場景一:

場景二:恢復到test_rowcol錶樣(費了九牛二虎之力,大神們有高招請多指教)

--建立一組臨時表

--利用split函式和row_number()over()且再次利用臨時表

hive中行轉列,列轉行的場景及實現

hive行轉列,列轉行的應用場景 1 需要取 訂單號 對應的所有商品 sku號 商品 sku號 放在一列,即從table1查詢出table2 2 當商品 sku號 均在一列的時候,需要查詢每個 sku號 對應的 訂單號 即從table2查詢出table1。3 場景 在hive表中,乙個使用者會有多個...

SQL Server 中行轉列 列轉行

行轉列 create database test on primary name test.mdf filename d project test.mdf size 10mb,filegrowth 15 log on name test.ndf filename d project test.ldf...

SQL中行轉列 列轉行

sql行轉列 列轉行 這個主題還是比較常見的,行轉列主要適用於對資料作聚合統計,如統計某類目的商品在某個時間區間的銷售情況。整理測試資料 create table wyc test id int 32 not null auto increment name varchar 80 default n...