hive中行轉列的問題

2021-08-11 12:31:40 字數 609 閱讀 9359

在很多情況下,我們需要將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表中,乙個使用者會有多個...