hive中函式的行與列的轉換

2021-10-10 23:32:39 字數 1512 閱讀 9025

concat(string a/col, string b/col…):返回輸入字串連線後的結果,支援任意個輸入字串;

concat_ws(separator, str1, str2,…):它是乙個特殊形式的 concat()。第乙個引數剩餘引數間的分隔符。分隔符可以是與剩餘引數一樣的字串。如果分隔符是 null,返回值也將為 null。這個函式會跳過分隔符引數後的任何 null 和空字串。分隔符將被加到被連線的字串之間;

注意:concat_ws must be 「string or array」

collect_set(col):函式只接受基本資料型別,它的主要作用是將某字段的值進行去重彙總,產生array型別字段。

collect_list(col):函式只接受基本資料型別,它的主要作用是將某字段的值進行不去重彙總,產生array型別字段。

1)函式說明

split(str, separator):將字串按照後面的分隔符切割,轉換成字元array。

explode(col):將hive一列中複雜的array或者map結構拆分成多行。

lateral view

用法:lateral view udtf(expression) tablealias as columnalias

解釋:lateral view用於和split, explode等udtf一起使用,它能夠將一行資料拆成多行資料,在此基礎上可以對拆分後的資料進行聚合。

lateral view首先為原始表的每行呼叫udtf,utdf會把一行拆分成一或者多行,lateral view再把結果組合,產生乙個支援別名表的虛擬表。

over():指定分析函式工作的資料視窗大小,這個資料視窗大小可能會隨著行的變而變化。

current row:當前行

n preceding:往前n行資料

n following:往後n行資料

unbounded:無邊界

unbounded preceding 前無邊界,表示從前面的起點,

unbounded following後無邊界,表示到後面的終點

lag(col,n,default_val):往前第n行資料

lead(col,n, default_val):往後第n行資料

first_value (col,true/false):當前視窗下的第乙個值,第二個引數為true,跳過空值

last_value (col,true/false):當前視窗下的最後乙個值,第二個引數為true,跳過空值

ntile(n):把有序視窗的行分發到指定資料的組中,各個組有編號,編號從1開始,對於每一行,ntile返回此行所屬的組的編號。注意:n必須為int型別。

rank() 排序相同時會重複,總數不會變

dense_rank() 排序相同時會重複,總數會減少

row_number() 會根據順序計算

hive中的多行多列轉換

1.多行轉多列 原表test表儲存格式如下,希望進行優化 name subject score 張三語文 90張三 數學85 張三英語 92李四 語文75 李四數學 90李四 英語80 王五語文 95王五 數學100 王五英語98 name chinese math english 張三90 859...

Hive函式07 行轉列 列轉行函式

concat string a col,string b col 返回輸入字串連線後的結果,支援任意個輸入字串 concat ws separator,str1,str2,它是乙個特殊形式的 concat 第乙個引數剩餘引數間的分隔符。分隔符可以是與剩 餘引數一樣的字串。如果分隔符是 null 返回...

函式 Hive 行轉列 和 列轉行

在hive實際開發過程中,我們會遇到 行轉列 和 列轉行 的場景。比如 1 需要取 訂單號 對應的所有商品 sku號 商品 sku號 放在一列,即從table1查詢出table2 2 當商品 sku號 均在一列的時候,需要查詢每個 sku號 對應的 訂單號 即從table2查詢出table1。實現方...