列の型変更
列の型を変えます。文字列として読み込まれた数値を計算できるようにしたり、日付として扱えていない列を日付型にして期間の集計やグラフの時系列軸に使えるようにします。
SQLビルダーにも同じ名前の機能がありますが、日付の書式の書き方はつなぎ先のデータベースに従います。SQLビルダーで使うときは列の型変更を見てください。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | 型を変えたデータ |
Spark エンジンでも動きます。
列の数・行の数・並び順は変わりません。変わるのは指定した列の型だけです。
設定項目
変更
型を変える列と、変更後の型の組です。いくつでも足せます。
- 処理対象列を選択必須
- 型を変える列。複数選べます。同じ型にする列はまとめて指定できます。
- 変更後の型必須
- 文字列 / 数値 / 日付 / 日付時間 / 時間 のいずれか。
設定は上から順に適用されます。 #1 #2 の順でデータに処理が当たります。
同じ列を 2 回指定すると、後の設定が勝ちます。 たとえば #1 で数値型に、#2 で同じ列を文字列型にすると、結果は文字列型です。
日付形式を指定する
変更後の型が日付・日付時間・時間のときだけ出ます。
nehan が自動で読める日付の形は決まっています。それ以外の形はそのままでは変換できないので、このオプションで、データにはこの形で入っていると伝えます。
ON にすると、よく使う形がプルダウンに出ます。
| 変更後の型 | プルダウンの選択肢 |
|---|---|
| 日付 | yyyy年mm月dd日 / yyyy-mm / yyyymm / yyyy年mm月 / mm月dd日 / 自分で指定する |
| 日付時間 | yyyy年mm月dd日 hh時MM分ss秒 / 自分で指定する |
| 時間 | hh時MM分ss秒 / 自分で指定する |
当てはまるものがなければ、「自分で指定する」を選びます。形式を直接入力します。書き方は日付フォーマットの仕様を参照してください。
形式に足りない部分は補われます。
| 形式にないもの | 補われる値 |
|---|---|
| 日 | 1 日。yyyy-mm に 2024-04 を渡すと 2024-04-01 |
| 月 | 1 月 |
| 年 | 1900 年。mm月dd日 に 04月25日 を渡すと 1900-04-25 |
mm月dd日 のように年がない形式を選ぶと、年は必ず 1900 になります。 今年の日付として扱いたいときは、先に文字列同士の結合で年を付けてから変換してください。
エラーを無視する
オプションの中にあります。既定は OFF です。
| 設定 | 変換できない値があったとき |
|---|---|
| OFF | エラーで止まります |
| ON | その値を欠損値にして、処理を完了します |
扱える範囲の外の日付(下記)が入っていた場合も、ON なら止まらず欠損値になります。
自動で変換できる形
日付形式を指定しなくても、次の形は読めます。ここにない形は「日付形式を指定する」で伝えてください。
日付として読める形
2023-04-25 2023/04/25 2023.04.25 2023-4-504/25/2023 25/04/2023 20230425Apr 25 2023 25-Apr-2023 2023-04-25 12:34:56(時刻は切り捨て)日付時間として読める形
2023-04-25 12:34:56 2023-04-25T12:34:56 2023/04/25 12:34:5604/25/2023 12:34:56 2023-04-25 12:34(秒の省略可)2023-04-25 12:34:56.789 2023-04-25(時刻は 00:00:00 になる)時間として読める形
12:34:56 12:34(秒の省略可) 1:05:00 12:34:56.7892023-04-25 12:34:56(日付は切り捨て)24 時以上(25:00:00 など)は変換できません。
扱える日付の範囲
| 型 | 範囲 |
|---|---|
| 日付 | 1677-09-22 〜 2262-04-11 |
| 日付時間 | 1677-09-21 00:12:44 〜 2262-04-11 23:47:16 |
この外の日付が入っているとエラーになります(エラーを無視するが ON なら欠損値)。この範囲はエラーのメッセージにもそのまま出ます。
エラーと対処
変換の失敗は 1 つのエラーにまとめて出ます。 列ごとに実行し直して 1 件ずつ潰す必要はありません。数値の失敗も日付の失敗も、1 回のメッセージに並びます。
変換できない値がある
変換後の型にできない値が、どれかの列に入っているとき。
以下の列に型変換できない値が含まれています。
このあとに、失敗した列が 1 行ずつ並びます。各行には列名・変えようとした型・読めなかった値の例が出ます。扱える日付の範囲から外れていた列は、値の代わりに範囲が示されます。
最後に対処が付きます。
下記オプションを利用することでエラーが解決できます。 ・エラーを無視する ・日付形式を指定する(日付関連の型変換限定)
直し方 — メッセージに出た値を手がかりに原因を切り分けます。
- 桁区切りや単位が混ざっている
- 数値にするときに多い原因です。
1,200や1200円は数値にできません。文字の置換で先に外します。 - 自動で読めない形の日付になっている
- 日付形式を指定するを on にして形式を伝えます。自動で読める形は上記のとおりです。
- 指定した形式と、記号以外の字が合っていない
- データ
2019年4月1日に%Y年%m月%d月と指定した(最後が月になっている)。 - 値の前後に空白がある
2019-04-01のように、見た目では分からない空白が入っている。- 列の中に形の違う値が混ざっている
2019-04-01と2019/04/01が同じ列にある。どちらか一方の形式しか指定できません。
どうしても一部が読めないときは、エラーを無視するを ON にすると、読めなかった値だけが欠損値になって処理が進みます。
指定した日付形式が使えない
日付形式を指定するで「自分で指定する」を選び、組み合わせとして成り立たない形式を入れたとき。データを見る前に止まるので、エラーを無視するを ON にしても出ます。
日付フォーマット「
{{date_format}}」は使用できません。時(%H)と分(%M)は両方指定するか、どちらも指定しないでください。
日付フォーマット「
{{date_format}}」は使用できません。秒(%S)を指定する場合は時(%H)も指定してください。
日付フォーマット「
{{date_format}}」は使用できません。12時間表記(%I)と午前/午後(%p)は両方指定するか、どちらも指定しないでください。
日付フォーマット「
{{date_format}}」は使用できません。指定内容を見直してください。
{{date_format}} のところには、入力した形式がそのまま出ます。最後の 1 つは、上の 3 つに当てはまらない形式のときに出ます。
直し方 — メッセージの指示どおりに書き直します。書き方は日付フォーマットの仕様を参照してください。
型を変えない列に、扱える範囲の外の日付がある
このノードで型を変えていない列に、扱える日付の範囲を超えた日付が入っていたとき。エラーを無視するはこのエラーには効きません。
以下の列に、nehanで扱えない日付が含まれています。
このあとに、範囲から外れた列の名前が並びます。
直し方 — 範囲内に収まるようデータを直すか、その列を変更に足して文字列型にします。
選んだ列が見つからない
対象列で指定した列が入力データにないとき、またはどの条件にも 1 列も当たらないとき。前の処理で列名が変わった場合にも出ます。エラーを無視するはこのエラーには効きません。
対象の列が存在しません。
直し方 — 列を選び直してください。列名が変わりうるデータでは、名前に頼らない選び方(型で選ぶ・前方一致)に変えると壊れにくくなります。
よく使う例
1. 文字列になっている金額を数値にする
CSV から読んだ金額が文字列として入っていて、合計が出せないとき。
入力
| 店舗 | 売上(文字列) |
|---|---|
| 渋谷 | 1200000 |
| 新宿 | 980000 |
設定
| 設定項目 | 値 |
|---|---|
| 対象列 | 売上 |
| 変更後の型 | 数値 |
出力 — 売上が数値型になり、合計・平均が出せるようになります。
2. 自動では読めない形の日付を変換する
入力
| 受注日 |
|---|
2019年4月1日 |
2019年4月15日 |
設定
| 設定項目 | 値 |
|---|---|
| 対象列 | 受注日 |
| 変更後の型 | 日付 |
| 日付形式を指定する | ON |
| 形式 | yyyy年mm月dd日(プルダウンの先頭) |
出力 — 日付型になり、月ごとの集計やグラフの時系列軸に使えます。
3. 20240401 のような数字の羅列を日付にする
入力
| 計上日 |
|---|
20240401 |
設定
| 設定項目 | 値 |
|---|---|
| 変更後の型 | 日付 |
| 日付形式を指定する | ON |
| 形式 | 自分で指定する → %Y%m%d |
出力 — 2024-04-01 の日付型になります。
4. 年月だけのデータを日付にする
入力
| 対象月 |
|---|
2024-04 |
設定 — 形式に %Y-%m を指定します。
出力 — 2024-04-01 になります。足りない部分は 1 日・1 月で補われます。
注意 — 年がない形式(mm月dd日 など)を選んだときは、年が 1900 になります。04月25日 は 1900-04-25 です
5. 一部だけ形式が違う列を、止めずに取り込む
入力
| 日付 |
|---|
2024-04-01 |
不明 |
2024-04-03 |
設定
| 設定項目 | 値 |
|---|---|
| 変更後の型 | 日付 |
| エラーを無視する | ON |
出力 — 不明 が欠損値になり、処理は完了します。OFF だとエラーで止まります。
6. 計算に使わない数値を文字列にする
郵便番号・電話番号・商品コードなど、桁区切りされたくない数値を文字列にします。
入力
| 商品コード |
|---|
1234567 |
設定 — 変更後の型を文字列にします。
出力 — 1,234,567 のような桁区切りがされなくなり、グラフの軸でも区分として扱われます。
7. 日付時間から時間だけを取り出す
入力 2024-04-01 13:05:30(日付時間型)
設定 — 変更後の型を時間にします。
出力 13:05:30 — 日付は切り捨てられます。
8. 複数の列をまとめて変える
変更を足せば、1 つのノードで何列でも変えられます。
入力
| 売上 | 原価 | 粗利 | 受注日 |
|---|---|---|---|
1200 | 800 | 400 | 2024-04-01 |
すべて文字列として読み込まれています。
設定
| 変更 | 対象列 | 変更後の型 |
|---|---|---|
| #1 | 売上, 原価, 粗利 | 数値 |
| #2 | 受注日 | 日付 |
出力 — 3 列が数値型、受注日 が日付型になります。対象列は複数選べるので、同じ型にする列は 1 つの「変更」にまとめられます。