Lateral View Outer

語法:

lateralView: LATERAL VIEW [OUTER] udtf(expression) tableAlias AS columnAlias (',' columnAlias) * fromClause: FROM baseTable (lateralView)*

Lateral view outer:當table function不輸出任何一行時,對應的輸入行在Lateral view結果中依然保留,且所有table function輸出列爲null。

在Hive0.12.0版本後引入

用戶可以指定可選的OUTER關鍵字來生成行,即使LATERAL VIEW通常不會生成行。當所使用的UDTF不產生任何行時(使用explode()函數時,explode的列爲空時,很容易發生上述這種情況)。 在這種情況下,源數據行不會出現在結果中。如果想讓源數據行繼續出現在結果中,可以使用 OUTER可以用來阻止關鍵字,並且來自UDTF的列使用NULL值代替

舉例:

sql1:select goods_id2,area from explode_lateral_view LATERAL VIEW explode(split(goods_id,','))goods as goods_id2;

第一個sql中explode返回的數據不是空值,所以正常拆分

sql2:select goods_id2,area from explode_lateral_view LATERAL VIEW explode(array())goods as goods_id2;

第二個sql中explode返回的數據是空值,所以不用outer的情況下,不輸出任何東西

sql3:select goods_id2,area from explode_lateral_view LATERAL VIEW Outer explode(array())goods as goods_id2;

第三個sql在第二個sql的基礎上添加了一個Outer,結果會展示。只是來自UDTF的列被NULL值替代。

 

 

備註:

<property>

<!--展示當前數據庫名稱>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>

<property>

<!--查詢的時候打印字段信息>
<name>hive.cli.print.header</name>
<value>true</value>
</property>

 

 

 

 

 

 

 

 

參考:https://help.aliyun.com/document_detail/87722.html?spm=a2c4g.11186623.6.694.19c16f41znW7iW

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章