コンテンツにスキップ

文字列の分割

決まった文字で区切って、1 つの列を複数の列に分けます。東京都/渋谷区/道玄坂 のような住所を分ける、カンマ区切りのタグを 1 件ずつにする、といった使い方をします。

取り出したいのが「先頭 3 文字」や「数字の並び」のように位置や形で決まる一部分なら、文字の抽出の方が向いています。こちらは区切り文字で全体を分けるものです。

入出力

ポート内容
入力データデータ
出力データデータ

Spark エンジンでも動きます。

設定項目

詳細な項目は「詳細設定」の見出しの下にあります。 条件によって出ないこともあります。

結果の挿入先を設定必須
分けた結果の列名。後ろに 0 から始まる連番が付きます。住所 と入れると 住所0 住所1 住所2 になります。同じ名前の列が既にあると上書きされます。
処理対象列を選択必須
分ける列。文字列・日付・日付時間・時間の列が選べます。選べるのは 1 列です。
分割基準の文字を入力必須
区切りに使う文字。入れた文字と同じ並びだけが区切りになります。記号を入れても特別な意味は持ちません。見た目が近くても別の文字なら区切りになりません(たとえば - と —)。
発生した欠損値を置換する
区切りの数が行によって違うとき、足りないところに入れる文字。空のままだと空欄になります。
処理対象列を結果から除外する
on にすると、分ける前の列を消します。
分割した文字列を縦持ちに変換する
on にすると、列を増やす代わりに行を増やします。

横に分けるか、縦に積むか

見るところ既定(横)縦持ちに変換
結果列が増える行が増える
列の数いちばん多く区切れた行に合わせる増えない
足りない分空欄(「発生した欠損値を置換する」で埋められる)行そのものができない(「発生した欠損値を置換する」に文字を入れると、その文字の行として残る)
他の列そのまま増えた行すべてに同じ値が入る
向いている場面住所を 3 列に分けるタグを 1 件 1 行にして集計する

SQLビルダーにも同じ題の機能がありますが、別の機能です。 あちらは必ず行が増え、結果の列名には flatten_ が付き、もとの列は必ず消えます。あちらは入れた区切り文字を SQL にそのまま渡すので、記号を区切りにするときは注意が要ります。違いの一覧は文字列の分割にあります。

文字列でない列を分けるとき

日付・日付時間・時間の列も選べます。いったん次の形の文字にしてから分けます。

元の型分ける前の形
日付2024-01-01
日付時間2024-01-01 12:34:56
時間12:34:56

分けた結果の列はすべて文字列になります。元の列の型は変わりません。

エラーと対処

列を選ばずに実行した

「処理対象列を選択」が空のまま実行したときに出ます。前の処理で列名が変わり、選んでいた列が入力データからなくなったときにも同じメッセージです。

対象の列が選択されていません。

直し方 — 分けたい列を選び直してください。

よく使う例

1. 住所を分ける

お題 — 1 列に入っている住所を区分ごとに分けたい

入力 — 住所 に 東京都/渋谷区/道玄坂

設定 — 結果の挿入先 住所、分割基準 /

出力 — 住所0 に 東京都、住所1 に 渋谷区、住所2 に 道玄坂

2. タグを 1 件 1 行にする

お題 — 1 セルに複数入っているタグを集計したい

入力 — タグ に 赤,青,緑(1 行)

設定 — 分割基準 ,、「分割した文字列を縦持ちに変換する」を on

出力 — 1 行が 3 行になり、他の列は 3 行とも同じ値。データ集計でタグ別の件数が出せる

3. 分ける前の列を消す

お題 — 分けたあと、元の 1 列は残したくない

入力 — 住所 と 売上

設定 — 分割基準 /、「処理対象列を結果から除外する」を on

出力 — 売上 住所0 住所1 住所2(住所 は消える)

4. 足りないところを埋める

お題 — 区切りの数が行によって違うので、空欄に文字を入れたい

入力 — 住所 に 東京都/渋谷区/道玄坂 と 大阪府/大阪市(2 行)

設定 — 分割基準 /、「発生した欠損値を置換する」に なし

出力 — 2 行目の 住所2 が空欄ではなく なし になる

5. 日付を年・月・日に分ける

お題 — 日付の列から年・月・日を別々の列にしたい

入力 — 日付型の 受注日 に 2024-01-05

設定 — 処理対象列 受注日、分割基準 -、結果の挿入先 受注

出力 — 受注0 に 2024、受注1 に 01、受注2 に 05(いずれも文字列)

関連