に最終更新
EXPLODE_SPLIT
説明
explode_split テーブル関数は、指定した区切り文字に従って文字列を複数の部分文字列に分割し、各部分文字列を個別の行に展開します。
ネストしたデータ構造を標準的なフラットテーブル形式に展開するには、LATERAL VIEW と組み合わせて使用します。
explode_split と explode_split_outer の主な違いは、NULL 値の扱い方です。
構文
EXPLODE_SPLIT(<str>, <delimiter>)
パラメータ
<str>String 型。分割する文字列。<delimiter>String 型。区切り文字。
戻り値
- 分割された部分文字列からなる列を返します。列の型は String です。
使用上の注意
<str>が NULL の場合、0 行を返します。<str>が空文字列("")の場合、または分割できない場合、1 行を返します。<delimiter>が NULL の場合、0 行を返します。<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("ab,cd,ef", ",") t2 as c;+------+------+
| k1 | c |
+------+------+
| 1 | ab |
| 1 | cd |
| 1 | ef |
+------+------+ - 空文字列と分割できない場合
select * from example lateral view explode_split("", ",") t2 as c;+------+------+
| k1 | c |
+------+------+
| 1 | |
+------+------+select * from example lateral view explode_split("abc", ",") t2 as c;+------+------+
| k1 | c |
+------+------+
| 1 | abc |
+------+------+ - NULL 引数
select * from example lateral view explode_split(NULL, ',') t2 as c;Empty set (0.03 sec) - 空の区切り文字
select * from example lateral view explode_split('abc', '') t2 as c;+------+------+
| k1 | c |
+------+------+
| 1 | a |
| 1 | b |
| 1 | c |
+------+------+ - 区切り文字が NULL の場合
select * from example lateral view explode_split('abc', null) t2 as c;Empty set (0.03 sec)