JSONからBigQueryスキーマへの変換 — Numio
サンプル JSON から Google BigQuery のテーブルスキーマ(name、type、mode フィールドを持つ JSON 配列)を生成します。配列は REPEATED、ネストしたオブジェクトは RECORD になり、配列の全要素は 1 つのスキーマにマージされます。
サンプルのイベントや API レスポンスから、bq load や bq mk --schema 用のスキーマファイルの下書きを作る。
JSON
Big Query Schema
こんなときに使えます
- サンプルのイベントや API レスポンスから、bq load や bq mk --schema 用のスキーマファイルの下書きを作る。
- テーブル作成前に、ログレコード内のネストしたオブジェクトや配列が RECORD 列・REPEATED 列にどう対応するかを確認する。
使い方
- JSON オブジェクト 1 つ、またはサンプルレコードの配列を左側のエディターに貼り付けるか、ファイル読み込みボタンで UTF-8 のファイルを開きます。
- 右側のスキーマを読み、各フィールドに選ばれた型を確認します。特に日付、数字の文字列、配列に注意してください。
- JSON 配列をコピーし、必要に応じて型を調整したり mode を REQUIRED にしたりして、スキーマファイルとして保存します。
JSON サンプルオブジェクト
{
"order_id": 1024,
"zip": "02139",
"coupon": null,
"created_at": "2026-01-05T10:00:00Z",
"items": [{ "sku": "A1", "qty": 2 }, { "sku": "B7", "price": 4.5 }]
}BigQuery スキーマ JSON
[
{
"name": "order_id",
"type": "INTEGER",
"mode": "NULLABLE"
},
{
"name": "zip",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "coupon",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "created_at",
"type": "TIMESTAMP",
"mode": "NULLABLE"
},
{
"name": "items",
"type": "RECORD",
…仕様と制限
文字列が TIMESTAMP になるのは ISO の日時(2026-01-05T10:00:00Z)の形の場合だけで、DATE になるのは YYYY-MM-DD のみの場合だけです。"02139" のような数字の文字列を含め、それ以外は STRING のままです。
null 値や空配列は型の情報を持たないため、他のレコードが値を与えない限り STRING(NULLABLE または REPEATED)になります。REQUIRED モードは生成されません。
フィールドは配列の全要素にわたってマージされます。INTEGER と FLOAT は FLOAT になり、それ以外の型の衝突は STRING にフォールバックします。
変換はブラウザ内で行われ、何もアップロードされません。
FAQ
タイムスタンプの列が DATETIME ではなく TIMESTAMP になるのはなぜですか?
生成器はタイムゾーン付きとローカルの日時を区別せず、ISO 日時の文字列はすべて TIMESTAMP にします。値にタイムゾーンがない場合は手動で DATETIME に変更してください。
レコードの配列を貼り付けられますか?
はい。ルートのオブジェクト配列は 1 つのスキーマにマージされるため、一部のレコードにしかないフィールドも含まれます。NDJSON(1 行 1 オブジェクト)は解析されません。各行をカンマで区切って [ ] で囲んでください。
null 値の型はどうなりますか?
他のサンプルがそのフィールドに値を与えない場合、例の coupon のように NULLABLE STRING になります。列が数値や RECORD なら、null 以外のサンプルを用意するか型を編集してください。