列の型変更
列のデータ型を変えます。変換はデータベース側で行われるので、読める形も失敗したときの振る舞いも、つなぎ先のデータベースによって変わります。
分析プロジェクトとの違い
| 見るところ | SQLビルダー | 分析プロジェクト |
|---|---|---|
| 日付の形式 | つなぎ先のデータベースの書き方をそのまま入れる | 候補から選ぶ + 自分で入力 |
| JSON の列 | 型を文字で定義できる | ない |
| エラーを無視する | 効くデータベースと効かないデータベースがある | 変換できない値には効くが、日付形式の指定ミス・範囲外の日付・列が見つからないときには効かない(エラーと対処) |
| 変換できる形の一覧 | データベース側が決める | nehan 側で決まっている |
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
設定項目
「オプション」はチェックを入れるまで中身が出ません。 見出しの横のチェックボックスを on にすると、エラーを無視する が出ます。
- 変更
- 型を変える列の組を足していきます。1 つの組は下の 3 つからできています。
- 列を選択必須
- 型を変える列。
- 型を選択必須
- 変更後の型。文字列 / 数値 / 日付 / 日付時間 の 4 つから選びます。選んだ列が JSON でないときに出ます。
- 型を定義する必須
- 選んだ列が JSON のときに、こちらが代わりに出ます。データベースの型名をそのまま入れます。
- 日付のフォーマットを指定
- 変更後の型が日付か日付時間のときに出ます。空にすると、日付は
YYYY-MM-DD相当、日付時間はYYYY-MM-DD HH:MI:SS相当の既定値が使われます。既定値の書き方もデータベースごとに違います(PostgreSQL はYYYY-MM-DD HH24:MI:SS、MySQL は%Y-%m-%d %H:%i:%S)。 - エラーを無視する
- 変換できない値を失敗させずに空にします。効くのは Google BigQuery / Amazon Athena / Presto / Snowflake だけです。
効かないデータベース
| つなぎ先 | 「エラーを無視する」 |
|---|---|
| Google BigQuery | 効く(SAFE_CAST) |
| Amazon Athena / Presto | 効く(TRY_CAST) |
| Snowflake | 効く |
| MySQL / PostgreSQL / Amazon Redshift / Treasure Data / SQL Server | 効かない(on にしても SQL は変わりません) |
効かないデータベースで変換に失敗すると、ノードごとエラーで止まります。先に条件で行を絞り込みで変換できない行を外してください。
生成される SQL
PostgreSQL につないだ場合です。
SELECT CAST("数量" AS float8) AS "数量", TO_DATE("受注日", 'YYYY-MM-DD') AS "受注日", "店舗"FROM "orders"列の並びは変わりません。 型を変えた列もそのままの位置に残ります。
型の名前は nehan の名前ではなく、そのデータベースの型名に置き換わります。 PostgreSQL なら数値は float8、文字列は varchar です。
日付・日付時間にするときは TO_DATE / TO_TIMESTAMP のような専用の関数になり、それ以外は CAST です。どちらになるかは元の列の型でも変わります(PostgreSQL では、日付の列を日付時間にするときは CAST、数値の列からなら TO_TIMESTAMP)。MySQL では STR_TO_DATE、Google BigQuery では PARSE_DATE のように関数そのものが変わります。
エラーと対処
どのエラーも、設定を直してノードを実行し直せば消えます。
Treasure Data で日付型にしようとした
Treasure Data につないだビルダーで、変更後の型に日付を選ぶと出ます。
日付型はサポートされていません
直し方 — 文字列のままにするか、日付ではなく数値(UNIX 時間)で扱ってください。
Treasure Data で日付時間型にしようとした
同じく Treasure Data で、変更後の型に日付時間を選ぶと出ます。
日付時間型はサポートされていません
直し方 — 上と同じです。
列が選ばれていない
型だけ選んで列を選んでいない行があると出ます。
列を選択してください
直し方 — 列を選ぶか、その行を削除してください。
上流にない列が選ばれている
前のノードで列が消えたあとに実行すると出ます。
存在しない列が選択されています
直し方 — 列を選び直してください。
入力がつながっていない
前のノードがつながっていないと出ます。
カラムが選択されていません。条件を確認してください
直し方 — 入力にノードをつないでください。
よく使う例
1. 文字列の数字を数値にする
お題 — "1200" のまま入っている金額で足し算したい
入力 — 売上(文字列)
設定 — 売上 → 数値
出力 — 売上 が数値になり、数値列同士の演算が使えます
2. 文字列の日付を日付型にする
お題 — 2026-04-01 の形で入っている列を日付として扱いたい
入力 — 受注日(文字列)
設定 — 受注日 → 日付、フォーマットは空欄(PostgreSQL なら既定の YYYY-MM-DD が使われます)
出力 — 受注日 が日付型
3. 区切りが違う日付を読む
お題 — 2026/04/01 のようにスラッシュ区切りで入っている
入力 — 受注日(文字列。2026/04/01 の形)
設定 — 日付、フォーマットに PostgreSQL なら YYYY/MM/DD
出力 — 日付型
4. 変換できない値を空にする
お題 — - や 不明 が混ざっていて変換が止まる(BigQuery につないでいる)
入力 — 売上(文字列。1200 - 不明 が混ざっている)
設定 — 数値、「エラーを無視する」を on
出力 — 変換できた行は数値、できなかった行は空欄
5. JSON の中身の型を決める
この例は、選んだ列が JSON のときだけです。 列の型が JSON だと 「型を選択」が消えて、代わりに型を定義するという入力欄が出ます。 BigQuery のように JSON を持てるデータベースにつないだときに現れます。
お題 — JSON の列を、中身の形どおりに扱いたい
入力 — payload(JSON。中身は {"count": 3} のような形)
設定 — 「型を定義する」に STRUCT<count INT64> のように、つなぎ先の
データベースの書き方で型名を入れる
出力 — payload がその型として扱われ、後ろのノードで count を
取り出せるようになります