特殊な文字列のクレンジング
会社名・電話番号・住所という決まった形のデータを整えます。会社名と電話番号からは余分な表記を取り除き、住所からは都道府県や市区町村を取り出します。
大文字小文字や空白のような一般的な整え方は文字列のクレンジングを使ってください。こちらはこの 3 種類のデータにしか効かない決め打ちの処理です。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
Spark エンジンでも動きます。行の数は変わりません。
設定項目
- 会社名表記の統一
- 既定は on。on にすると下に処理対象列を選択が出ます。文字列の列だけ選べます。複数選べます。
- 電話番号表記の統一
- 既定は on。on にすると下に処理対象列を選択が出ます。文字列の列だけ選べます。複数選べます。
- 住所の抽出
- 既定は on。on にすると設定のまとまりが出ます。いくつでも足せますので、都道府県と市区町村を同時に取り出せます。
- 結果を挿入する新規列名を入力必須
- 「設定」の中にあります。取り出した値を入れる新しい列の名前。
- 処理対象列を選択必須
- 「設定」の中にあります。住所が入っている列。文字列の列だけ選べます。
- 切り出し要素を選択
- 「設定」の中にあります。都道府県(既定)か市区町村。
会社名・電話番号の「処理対象列を選択」には必須の印が付きませんが、on のまま列を選ばずに実行するとエラーになります。 使わないなら on/off の方を off にしてください。
3 つの処理
それぞれ独立した on/off です。3 つとも既定は on なので、使わない処理は off にしてください。
| 処理 | 何をするか | 結果の行き先 |
|---|---|---|
| 会社名表記の統一 | 株式会社 と ㈱ を取り除く | 選んだ列を書き換える |
| 電話番号表記の統一 | 全角を半角に直してから - を取り除く。090-12345678 は 09012345678 になる | 選んだ列を書き換える |
| 住所の抽出 | 都道府県または市区町村を取り出す | 新しい列を作る |
電話番号で取り除かれるのは半角の - だけです。全角ハイフン - は半角に直されてから消えますが、長音符 ー は消えません(ー になって残ります)。ー 区切りが混ざっているときは、先に文字の置換で - に直してください。
住所の抽出で取れるもの
| 切り出し要素 | 東京都渋谷区道玄坂1-2-3 から取れる値 |
|---|---|
| 都道府県 | 東京都 |
| 市区町村 | 渋谷区 |
- 市区町村は、都道府県から始まる住所からしか取れません。
渋谷区道玄坂1-2-3のように都道府県がないと空欄になります - 当てはまる形が見つからなかった行は空欄になります。エラーにはなりません
- 取り出した値は新しい列に入り、元の住所の列はそのまま残ります
市区町村は「後ろに町名や番地が続いている」ことが条件
市区町村で終わっている住所からは取れません。 市区町村名のうしろに文字が続いていないと当てはまらないので、都道府県 + 市区町村 だけの列に掛けると全部空欄になります。
| 入力 | 市区町村 |
|---|---|
東京都渋谷区道玄坂1-2-3 | 渋谷区 |
東京都渋谷区1-2-3 | 渋谷区 |
東京都渋谷区 | (空欄) |
長野県北佐久郡軽井沢町 | (空欄) |
長野県北佐久郡軽井沢町1-1 | 北佐久郡軽井沢町 |
空欄ばかりになったら、住所の列が市区町村で終わっていないか確かめてください。 続きがない住所から取り出したいときは、このノードではなく文字の抽出の「条件に一致した文字を抽出」で、条件タイプ「が末尾の」+目印の文字に 市,区,町,村 を指定してください。
政令指定都市は「市」と「区」がひとまとまりで返る
| 入力 | 市区町村 |
|---|---|
大阪府大阪市北区梅田1-1 | 大阪市北区 |
神奈川県横浜市西区高島2-1 | 横浜市西区 |
北海道札幌市中央区北1条西2丁目 | 札幌市中央区 |
市までで集計したいときは、取り出したあとに文字の抽出で 市 までを切り出してください。 また、大阪府大阪市北区 のように区で終わっていると 大阪市 だけになります(上の条件に引っかかって区が落ちます)。
エラーと対処
どのエラーも、処理ごとの on/off と列の選び直しで直ります。
文字列でない列を選んだ
3 つの処理のどれかで、文字列でない列を選んでいるときに出ます。どの列かはメッセージに出ます。
文字列以外の列が選択されています。列:
{{not_string_cols}}
直し方 — 文字列の列だけを選んでください。電話番号が数値になっていると選べないので、先に列の型変更で文字列にします。
列を選ばずに実行した
処理を on にしたまま、その処理の「処理対象列を選択」が空のときに出ます。
対象の列が選択されていません。
直し方 — 列を選ぶか、その処理を off にしてください。
新規列名が既にある
「住所の抽出」で、入力した列名がすでにデータにあるときに出ます。
新規列名(
{{new_col}})が既存の列名と重複しています。
直し方 — 別の名前にしてください。
選んだ列が見つからない
「会社名表記の統一」「電話番号表記の統一」で指定した列が入力データにないとき、またはどの条件にも 1 列も当たらないとき。前の処理で列名が変わった場合にも出ます。
対象の列が存在しません。
直し方 — 列を選び直してください。列名が変わりうるデータでは、名前に頼らない選び方(型で選ぶ・前方一致)に変えると壊れにくくなります。
よく使う例
1. 会社名から会社形態の表記を外す
お題 — 同じ会社が 株式会社 の有無で別物として数えられてしまう
入力 — 会社名 に ㈱nehan、株式会社Hyper nehan、nehan
設定 — 「会社名表記の統一」を on、処理対象列 会社名。他の 2 つは off
出力 — 会社名 が nehan、Hyper nehan、nehan に書き換わる
2. 都道府県を取り出す
お題 — 住所から都道府県だけを列にして集計したい
入力 — 住所 に 東京都渋谷区道玄坂1-2-3
設定 — 「住所の抽出」を on、新規列名 都道府県、処理対象列 住所、切り出し要素「都道府県」。他の 2 つは off
出力 — 都道府県 に 東京都、住所 はそのまま
3. 都道府県と市区町村を両方取る
お題 — 都道府県で見てから市区町村まで掘りたい
入力 — 住所 に 東京都渋谷区道玄坂1-2-3
設定 — 「設定」を 2 つ作り、片方は新規列名 都道府県 で切り出し要素「都道府県」、もう片方は新規列名 市区町村 で「市区町村」
出力 — 都道府県 に 東京都、市区町村 に 渋谷区
4. 電話番号を揃えて突き合わせる
お題 — 2 つの名簿を電話番号でつなぎたいが、書き方が違う
入力 — A の 電話番号 に 090-1234-5678、B の 電話番号 に 09012345678
設定 — 両方のデータに「電話番号表記の統一」を掛ける
出力 — どちらも 09012345678 になり、キー列を指定する結合でつながる
5. 名寄せの下ごしらえ
お題 — 会社名で名寄せしたい
入力 — 会社名 に ㈱日本商事、日本商事 株式会社
設定 — 「会社名表記の統一」を on、処理対象列に 会社名。残りの 2 つは off
手順 — このノードで会社形態の表記を外し、文字列のクレンジングで空白などを整えてから、文字列の類似度グルーピングに渡す
出力 — このノードを通すと 日本商事 と 日本商事 (後ろに空白が残ります)。クレンジングで空白を落とすとどちらも 日本商事 で完全に一致するので、同じグループ番号が付きます
注意 — 株式会社 を外しただけでは 日本商事 の空白が残るので、値としては別物です。類似度は 0.86 あるので類似度グルーピングなら同じ番号に入りますが、重複行の処理やデータ集計でキーにすると別の行として数えられます。空白を落とす工程を省かないでください