メインコンテンツまでスキップ
バージョン: 4.x

EXPLODE

説明

explode関数は配列を入力として受け取り、配列の各要素を個別の行にマップします。通常、ネストされたデータ構造を標準的な表形式にフラット化するためにLATERAL VIEWと組み合わせて使用されます。explodeとexplode_outerの主な違いは、空の値の処理方法にあります。

構文

EXPLODE(<array>)
EXPLODE_OUTER(<array>)

必須パラメータ

Parameterデスクリプション
<arr>配列型

戻り値

配列が空でないまたはNULLでない場合、explodeexplode_outerの戻り値は同じです。

データが空またはNULLの場合:

explodeは行を生成せず、これらのレコードをフィルタアウトします。

explode_outerは配列が空の場合、単一の行を生成しますが、展開された列の値はNULLになります。配列がNULLの場合も、行を保持してNULLを返します。

select e1 from (select 1 k1) as t lateral view explode([1,2,3]) tmp1 as e1;
+------+
| e1 |
+------+
| 1 |
| 2 |
| 3 |
+------+
select e1 from (select 1 k1) as t lateral view explode_outer(null) tmp1 as e1;
+------+
| e1 |
+------+
| NULL |
+------+
select e1 from (select 1 k1) as t lateral view explode([]) tmp1 as e1;
Empty set (0.010 sec)
select e1 from (select 1 k1) as t lateral view explode([null,1,null]) tmp1 as e1;
+------+
| e1 |
+------+
| NULL |
| 1 |
| NULL |
+------+
select e1 from (select 1 k1) as t lateral view explode_outer([null,1,null]) tmp1 as e1;
+------+
| e1 |
+------+
| NULL |
| 1 |
| NULL |
+------+