EXPLODE
デスクリプション
explode関数は配列を入力として受け取り、配列の各要素を個別の行にマップします。この関数は通常、LATERAL VIEWと組み合わせて使用され、ネストされたデータ構造を標準的なTable形式に平坦化します。explodeとexplode_outerの主な違いは、空の値の処理方法にあります。
Syntax
EXPLODE(<array>)
EXPLODE_OUTER(<array>)
必須パラメータ
| Parameter | デスクリプション |
|---|---|
<arr> | 配列型 |
戻り値
配列が空でないか、またはNULLでない場合、explodeとexplode_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 |
+------+