文字列のゼロ埋め
決まった桁数になるように、値の先頭に 0 を足します。1 を 001 にする、桁のそろっていないコードをそろえて突き合わせに使う、といった使い方をします。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
Spark エンジンでも動きます。行の数は変わりません。
設定項目
- 結果の挿入先を設定
- 新規列に挿入(既定)か既存列に上書き。選んだ方で、次に出る項目が変わります。
- 新規列名を入力必須
- 「新規列に挿入」のときに出ます。結果を入れる新しい列の名前。
- 処理対象列を選択必須
- 「新規列に挿入」のときに出ます。ゼロ埋めする列。文字列と数値の列が選べます。選べるのは 1 列です。
- 列を選択必須
- 「既存列に上書き」のときに出ます。この 1 項目が、ゼロ埋めする列と結果の書き戻し先を兼ねます。選んだ列がそのまま書き換わります。
- 桁数を設定必須
- 何桁に揃えるか。整数で入れます。
結果は文字列になる
ゼロ埋めした結果は文字列です。 数値のままでは先頭の 0 を保てないためです。「既存列に上書き」で数値の列を選ぶと、その列は文字列に変わります。
計算に使う列ではなく、表示や突き合わせに使う列に対して掛けてください。
桁の数え方
指定した桁数より長い値はそのままです。短くなるように切り詰められることはありません。
対象列に空欄が 1 つもないときは、数字として読める値をいったん数値として読み直してから桁を揃えます。 0012 に 3 桁を指定すると、0012 ではなく 012 になります。読み直しは列ごとにまとめて行われるので、数字として読めない値(A12 など)が列に 1 つでもあると、列全体が元の文字のまま扱われます。このとき 0012 は 0012 のままです。
空欄は空文字になります。 0 では埋まりません。
対象列に空欄が 1 つでもあると、読み直しそのものが行われません。 このときは全部の値が元の文字のまま桁を揃えられるので、0012 は 0012 のままです。すでに 0 が付いている値を揃え直したいときは、先に文字の置換などで先頭の 0 を外してからこのノードを掛けてください。
0012 に 3 桁を指定したときの結果 | 列の中身 |
|---|---|
012 | 空欄なし、全部が数字として読める |
0012 | 数字として読めない値がある(A12 など) |
0012 | 空欄がある |
エラーと対処
新規列名が既にある
「新規列に挿入」で、入力した列名がすでにデータにあるときに出ます。
新規列名(
{{new_col}})が既存の列名と重複しています。
直し方 — 別の名前にするか、元の列を書き換えてよいなら「既存列に上書き」に切り替えてください。
列を選ばずに実行した
「処理対象列を選択」(「既存列に上書き」なら「列を選択」)が空のまま実行したときに出ます。前の処理で列名が変わり、選んでいた列が入力データからなくなったときにも同じメッセージです。
対象の列が選択されていません。
直し方 — 列を選び直してください。
よく使う例
1. 社員番号を 4 桁に揃える
お題 — 桁数のばらばらな社員番号を 4 桁に揃えたい
入力 — 社員番号 に 1 23 456
設定 — 新規列名 社員番号4桁、処理対象列 社員番号、桁数 4
出力 — 0001 0023 0456
2. 数値の列を桁そろえの文字列にする
お題 — 数値として読み込まれた店舗番号を、3 桁表記で扱いたい
入力 — 数値型の 店舗番号 に 7 42 108
設定 — 処理対象列 店舗番号、桁数 3
出力 — 文字列の 007 042 108
3. 郵便番号を 7 桁に揃える
お題 — 桁の足りない郵便番号を 7 桁にそろえたい
入力 — 郵便番号 に 1234567 150001
設定 — 桁数 7
出力 — 1234567 0150001
4. 結合する前に桁をそろえる
お題 — 片方のデータは 001、もう片方は 1 でキーが合わない
入力 — A の 商品コード に 001、B の 商品コード に 1
設定 — 両方のデータにこのノードを掛け、桁数 3
出力 — どちらも 001 になり、キー列を指定する結合でつながる
5. 元の列を書き換える
お題 — 列を増やさず、その場でそろえたい
入力 — コード に 5 60
設定 — 結果の挿入先を設定「既存列に上書き」、列を選択 コード、桁数 3
出力 — コード が 005 060 に変わる(列は増えない)