EXPLODE_SPLIT_OUTER
概要
explode_split_outerTable関数は、指定された区切り文字に従って文字列を複数の部分文字列に分割し、各部分文字列を別々の行に展開するために使用されます。
ネストされたデータ構造を標準的なフラットTable形式に平坦化するために、LATERAL VIEWと組み合わせて使用する必要があります。
explode_split_outerとexplode_splitの主な違いは、null値の処理方法です。
構文
EXPLODE_SPLIT_OUTER(<str>, <delimiter>)
パラメータ
<str>String型、分割対象の文字列。<delimiter>String型、区切り文字。
戻り値
- 分割されたサブ文字列で構成される列を返します。列の型はStringです。
使用上の注意
<str>がNULLの場合、NULLを含む1行が返されます。<str>が空文字列("")または分割できない場合、1行が返されます。<delimiter>がNULLの場合、NULLを含む1行が返されます。<delimiter>が空文字列("")の場合、<str>はバイト単位で分割されます(SPLIT_BY_STRING)。
例
-
データの準備
create table example(
k1 int
) properties(
"replication_num" = "1"
);
insert into example values(1); -
通常のパラメータ
select * from example lateral view explode_split_outer("ab,cd,ef", ",") t2 as c;+------+------+
| k1 | c |
+------+------+
| 1 | ab |
| 1 | cd |
| 1 | ef |
+------+------+ -
空文字列と分割不可能なケース
select * from example lateral view explode_split_outer("", ",") t2 as c;+------+------+
| k1 | c |
+------+------+
| 1 | |
+------+------+select * from example lateral view explode_split_outer("abc", ",") t2 as c;+------+------+
| k1 | c |
+------+------+
| 1 | abc |
+------+------+ -
NULLパラメータ
select * from example lateral view explode_split_outer(NULL, ',') t2 as c;+------+------+
| k1 | c |
+------+------+
| 1 | NULL |
+------+------+ -
空の区切り文字
select * from example lateral view explode_split_outer('abc', '') t2 as c;+------+------+
| k1 | c |
+------+------+
| 1 | a |
| 1 | b |
| 1 | c |
+------+------+ -
Delimiterは NULL
select * from example lateral view explode_split_outer('abc', null) t2 as c;+------+------+
| k1 | c |
+------+------+
| 1 | NULL |
+------+------+