在很多情況下,我們需要將hive表中的某一列切分,轉成多行,這個時候我們想到了函式explode(),比如資料:
|people|name|addr|
|小明|北京,天津
需要轉換成:
|小明|北京|
|小明|天津|
這個時候用
select name , explode(split(addr,',')` from people
;
會報錯:
semanticexception [error 10081]: udtf's are not supported outside the select clause,
nor nested in expressions
這個時候可以使用lateral view就可以解決問題:
select
name,
address
from
people m lateral view explode(split ( addr,
',')) adtable as address
hive中行轉列 列轉行的實現
行轉列實現 表資訊 場景一 使用concat ws和collect set函式 說明 collect set函式可以返回乙個array型別。concat ws函式可以拼接陣列,如下 場景二 有時候如果需要對指標字段求和,則上述sql改寫成如下 場景三 使用str to map和explode函式以及...
mysql中行轉列
1 mysql中可以行轉列。通過group concat 函式。如 select group concat name from resources group by type 將name列的值轉化為一行,2 預設是之間用逗號隔開,還可以自定義符號來作為隔開。如使用 來隔開。如 select grou...
hive中行轉列,列轉行的場景及實現
hive行轉列,列轉行的應用場景 1 需要取 訂單號 對應的所有商品 sku號 商品 sku號 放在一列,即從table1查詢出table2 2 當商品 sku號 均在一列的時候,需要查詢每個 sku號 對應的 訂單號 即從table2查詢出table1。3 場景 在hive表中,乙個使用者會有多個...