文字列の分割
決まった文字で区切って、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(いずれも文字列)