Lateral View 阿里大資料用法

2021-10-06 03:43:10 字數 1316 閱讀 1111

lateral view和表生成函式(例如split、explode等函式)結合使用,它能夠將一行資料拆成多行資料,並對拆分後的資料進行聚合。

語法定義如下。

lateralview: lateral view [outer] udtf(expression) tablealias as columnalias (',' columnalias) * fromclause: from basetable (lateralview)*
lateral view outer:當您定義的表生成函式不輸出任何一行時,對應的輸入行在lateral view結果中依然保留,且所有表生成函式輸出列為null。

示例如下。

假設您有一張表pageads,它有兩列資料,第一列是pageid string,第二列是adid_list,即用逗號分隔的廣告id集合。

string pageid

arrayadid_list

「front_page」

[1, 2, 3]

「contact_page」

[3, 4, 5]

假如您需要統計所有廣告id在所有頁面**現的次數,實現過程如下所示。

拆分廣告id。

select pageid, adid 

from pageads lateral view explode(adid_list) adtable as adid;

執行結果如下。

string pageid

int adid

「front_page」

1「front_page」

2「front_page」

3「contact_page」

3「contact_page」

4「contact_page」

5進行聚合的統計,語句如下。

select adid, count(1) 

from pageads lateral view explode(adid_list) adtable as adid

group by adid;

執行結果如下。

int adid

count(1)11

2132

4151

乙個from語句後可以跟多個lateral view語句,後面的lateral view語句能夠引用它前面的所有表和列名。

以下面的表為例。

arraycol1

arraycol2

[1, 2]

[「a」, 「b」, 「c」]

[3, 4]

[「d」, 「e」, 「f」]

hive中的lateral view 用法詳解下篇

假設我們有一張表pageads,它有兩列資料,第一列是pageid string,第二列是adid list,即用逗號分隔的廣告id集合 string pageid arrayadid list front page 1,2,3 contact page 3,4,5 要統計所有廣告id在所有頁面中出...

阿里雲 vs Azure 大資料

本文比較了azure和阿里雲提供的資料庫服務,以幫助專業人士了解兩者的差異和共同點。無論您計畫從azure遷移至阿里雲,或是選擇同時使用azure 阿里雲的多雲模式,本文都將幫助您了解阿里雲的資料庫服務。阿里雲將資料庫服務分為如下表中的服務型別,每種型別提供了各具特點的產品,本文將從以下列表中重點介...

MAPJOIN HINT 阿里大資料用法

當乙個大表和乙個或多個小表join時,您可以在select語句中顯式指定mapjoin以提公升查詢效能。通常情況下,join操作在reduce階段執行表連線。整個join過程包含map shuffle reduce三個階段。mapjoin在map階段執行表連線,而非等到reduce階段才執行表連線。...