ホーム
BigQuery スキーマ

JSON から Google BigQuery テーブルスキーマ生成ツール

RECORD & NDJSON

JSONオブジェクトを解析し、RECORDモード、STRING、INTEGER、NUMERIC、TIMESTAMPフィールドを含むGoogle Cloud BigQueryテーブルスキーマJSONを自動推論・変換します。

Presets:
BigQuery スキーマ設定ecommerce_dw.fact_order_events
入力 JSON / NDJSON / JSONL ペイロード
1[
2 {
3 "name": "event_id",
4 "type": "STRING",
5 "mode": "REQUIRED",
6 "description": "Field representing event id"
7 },
8 {
9 "name": "order_id",
10 "type": "STRING",
11 "mode": "REQUIRED",
12 "description": "Field representing order id"
13 },
14 {
15 "name": "order_status",
16 "type": "STRING",
17 "mode": "REQUIRED",
18 "description": "Field representing order status"
19 },
20 {
21 "name": "event_timestamp",
22 "type": "TIMESTAMP",
23 "mode": "REQUIRED",
24 "description": "Timestamp indicating when event timestamp occurred"
25 },
26 {
27 "name": "order_date",
28 "type": "DATE",
29 "mode": "REQUIRED",
30 "description": "Calendar date for order date"
31 },
32 {
33 "name": "subtotal_amount",
34 "type": "NUMERIC",
35 "mode": "REQUIRED",
36 "description": "Monetary or numeric measure for subtotal amount"
37 },
38 {
39 "name": "tax_amount",
40 "type": "NUMERIC",
41 "mode": "REQUIRED",
42 "description": "Monetary or numeric measure for tax amount"
43 },
44 {
45 "name": "discount_amount",
46 "type": "INT64",
47 "mode": "REQUIRED",
48 "description": "Integer count or identifier for discount amount"
49 },
50 {
51 "name": "grand_total",
52 "type": "NUMERIC",
53 "mode": "REQUIRED",
54 "description": "Monetary or numeric measure for grand total"
55 },
56 {
57 "name": "currency",
58 "type": "STRING",
59 "mode": "REQUIRED",
60 "description": "Field representing currency"
61 },
62 {
63 "name": "is_expedited",
64 "type": "BOOL",
65 "mode": "REQUIRED",
66 "description": "Boolean indicator flag for is expedited"
67 },
68 {
69 "name": "customer",
70 "type": "RECORD",
71 "mode": "REQUIRED",
72 "description": "Nested struct containing customer attributes",
73 "fields": [
74 {
75 "name": "customer_id",
76 "type": "STRING",
77 "mode": "REQUIRED",
78 "description": "Field representing customer id"
79 },
80 {
81 "name": "email",
82 "type": "STRING",
83 "mode": "REQUIRED",
84 "description": "Field representing email"
85 },
86 {
87 "name": "loyalty_tier",
88 "type": "STRING",
89 "mode": "REQUIRED",
90 "description": "Field representing loyalty tier"
91 },
92 {
93 "name": "account_created_at",
94 "type": "TIMESTAMP",
95 "mode": "REQUIRED",
96 "description": "Timestamp indicating when account created at occurred"
97 }
98 ]
99 },
100 {
101 "name": "shipping_address",
102 "type": "RECORD",
103 "mode": "REQUIRED",
104 "description": "Nested struct containing shipping address attributes",
105 "fields": [
106 {
107 "name": "recipient_name",
108 "type": "STRING",
109 "mode": "REQUIRED",
110 "description": "Field representing recipient name"
111 },
112 {
113 "name": "street_address",
114 "type": "STRING",
115 "mode": "REQUIRED",
116 "description": "Field representing street address"
117 },
118 {
119 "name": "city",
120 "type": "STRING",
121 "mode": "REQUIRED",
122 "description": "Field representing city"
123 },
124 {
125 "name": "state_code",
126 "type": "STRING",
127 "mode": "REQUIRED",
128 "description": "Field representing state code"
129 },
130 {
131 "name": "postal_code",
132 "type": "STRING",
133 "mode": "REQUIRED",
134 "description": "Field representing postal code"
135 },
136 {
137 "name": "country_code",
138 "type": "STRING",
139 "mode": "REQUIRED",
140 "description": "Field representing country code"
141 }
142 ]
143 },
144 {
145 "name": "line_items",
146 "type": "RECORD",
147 "mode": "REPEATED",
148 "description": "Repeated array of line items entries",
149 "fields": [
150 {
151 "name": "item_id",
152 "type": "STRING",
153 "mode": "REQUIRED",
154 "description": "Field representing item id"
155 },
156 {
157 "name": "sku",
158 "type": "STRING",
159 "mode": "REQUIRED",
160 "description": "Field representing sku"
161 },
162 {
163 "name": "product_name",
164 "type": "STRING",
165 "mode": "REQUIRED",
166 "description": "Field representing product name"
167 },
168 {
169 "name": "quantity",
170 "type": "INT64",
171 "mode": "REQUIRED",
172 "description": "Integer count or identifier for quantity"
173 },
174 {
175 "name": "unit_price",
176 "type": "NUMERIC",
177 "mode": "REQUIRED",
178 "description": "Monetary or numeric measure for unit price"
179 },
180 {
181 "name": "category",
182 "type": "STRING",
183 "mode": "REQUIRED",
184 "description": "Field representing category"
185 }
186 ]
187 },
188 {
189 "name": "tracking_tags",
190 "type": "STRING",
191 "mode": "REPEATED",
192 "description": "Repeated array of tracking tags entries"
193 },
194 {
195 "name": "warehouse_location",
196 "type": "GEOGRAPHY",
197 "mode": "REQUIRED",
198 "description": "Geospatial coordinates for warehouse location"
199 },
200 {
201 "name": "cancellation_reason",
202 "type": "STRING",
203 "mode": "NULLABLE",
204 "description": "Field representing cancellation reason"
205 }
206]
スキーマ列数33 列 (30 必須)
STRUCT ネスト階層Level 0 階層 (3 ネストレコード)
フィールドモードPartition: event_timestamp • Standard SQL

ブラウザ内 100% 完全推論

サーバー送信ゼロ。複雑な JSON 構造、ネストされた STRUCT、NDJSON データをブラウザメモリ内で瞬時に安全推論。

BigQuery 本番型システムとモード

JSON から INT64、NUMERIC、TIMESTAMP、DATE、GEOGRAPHY、RECORD 型を正確にマッピングし、NULLABLE/REQUIRED/REPEATED を適切に設定。

クラウドデータ基盤向けマルチ出力

bq CLI コマンド、Google Cloud Terraform IaC、Python BigQuery クライアントコード、パーティション付き SQL DDL を即時生成。

技術リファレンス&アーキテクチャガイド

JSONからGoogle BigQueryテーブルスキーマ生成ツール — リファレンスガイド

JSONオブジェクトを解析し、RECORDモード、STRING、INTEGER、NUMERIC、TIMESTAMPフィールドを含むGoogle Cloud BigQueryテーブルスキーマJSONを自動推論・変換します。

主要パラメータ&設定項目

defaultModestring

トップレベルおよびネストされたプリミティブフィールドのデフォルトのNULL許容モード(NULLABLEまたはREQUIRED)を指定します。

初期値: NULLABLE
timestampDetectionboolean

ISO 8601形式の文字列(例: 2026-10-17T04:49:28Z)を自動検出し、汎用STRINGではなくTIMESTAMP型にマッピングします。

初期値: true
numericPrecisionstring

浮動小数点数の精度マッピングを制御します。科学計算用のFLOAT64、または財務計算の精度を保証するNUMERIC / BIGNUMERICから選択します。

初期値: NUMERIC
sanitizeFieldNamesboolean

無効なJSONキー(ハイフン、スペース、記号、先頭の数字)をBigQueryの命名規則([a-zA-Z_][a-zA-Z0-9_]*)に適合する識別子へ自動変換します。

初期値: true

プロの活用テクニック&推奨設定

複数レコードのサンプリングによるスキーマドリフト防止

改行区切りJSON(NDJSON)を変換する際は、複数のレコードを入力して推論することで、欠損キーや疎なフィールドがスキーマから除外されるのを防ぎます。

財務データの精度損失防止

通貨や小数点データを扱う場合は、IEEE 754規格のFLOAT64ではなく、最大38桁の固定小数点精度を持つNUMERIC型(または76桁のBIGNUMERIC型)を指定してください。

bq CLIとの直接連携ロード

生成されたスキーマをschema.jsonとして保存し、次のコマンドで即座にデータを取り込めます: bq load --source_format=NEWLINE_DELIMITED_JSON my_dataset.my_table gs://my-bucket/data.json ./schema.json

ネストされた配列のモデリング

オブジェクトの配列は type: 'RECORD', mode: 'REPEATED' に変換されます。内部の各子フィールドのmodeは適切にNULLABLEまたはREQUIREDを維持してください。

よくあるトラブルと解決策

無効なカラム名エラー: 'Fields must contain only letters, numbers, and underscores'

sanitizeFieldNamesを有効にするか、ハイフン(user-id)やピリオド、先頭数字を含むキーを手動で有効なスネークケース(user_id)に置換してください。

行間でのデータ型の不一致(行1はINTEGERだが行2がSTRINGなど)

データパイプライン側で型を統一するか、生成スキーマで型をSTRINGに拡張するか、またはBigQueryネイティブのJSON型を採用してください。

最大ネスト深度(15レベル)の超過エラー

BigQueryのSTRUCT構造体は最大15層までのネストに制限されています。階層構造をフラット化するか、深い階層を1つのBigQuery JSON型カラムに格納してください。

よくある質問 (FAQ)

ネストされたJSONオブジェクトや配列はBigQueryスキーマでどのように表現されますか?▼

JSONオブジェクトは type: 'RECORD'(STRUCT)に変換されます。プリミティブ値の配列は該当プリミティブ型で mode: 'REPEATED' となり、オブジェクトの配列は type: 'RECORD' かつ mode: 'REPEATED'(内部に子fields配列を保持)になります。

生成したスキーマJSONを使ってBigQueryにデータをインポートするには?▼

Google Cloud SDKから 'bq load --source_format=NEWLINE_DELIMITED_JSON my_dataset.my_table data.ndjson ./schema.json' を実行するか、BigQuery APIのInsert Job構成のschemaプロパティにスキーマJSONを直接渡します。

静的スキーマ定義とBigQueryネイティブのJSON型はどのように使い分けるべきですか?▼

クエリパフォーマンス、列ナローイング、インデックス、パーティショニング、厳格な型保証が必要な場合は明示的スキーマを使用します。スキーマレスなイベントログや構造が頻繁に変わるデータにはネイティブJSON型が適しています。

BigQueryのカラム命名規則と制約事項は何ですか?▼

カラム名は1〜300文字以内で、英字またはアンダースコアで始まり、英数字とアンダースコアのみ使用可能です。BigQueryのSQL実行時、カラム名は大文字と小文字を区別しません。

関連するおすすめ開発ツール

すべてのツール →
JSONからSnowflake CREATE TABLE DDL生成ツール開発ツール

JSONペイロードやスキーマから、VARIANT、VARCHAR、NUMBER、BOOLEAN、TIMESTAMP_NTZなどの最適化されたデータ型を備えたSnowflake SQL CREATE TABLE文を自動生成します。

ツールを開く→
JSON / YAML から Terraform HCL 変数・Locals 生成ツール開発ツール

JSON および YAML データを Terraform HCL の変数型制約 (type = object({...}))、デフォルト値、locals ブロック、terraform.tfvars 定義へ自動変換します。

ツールを開く→
OpenAPI・Swagger GraphQL SDL スキーマ変換 技術リファレンス開発ツール

OpenAPI 3.0/3.1およびSwagger 2.0のRESTエンドポイント、リクエストボディ、JSON SchemaをGraphQL SDLの型定義、Query、Mutation、Inputへマッピングする開発者向け技術仕様書。

ツールを開く→
SQL DDLからTypeBox TypeScriptスキーマへの変換ツール開発ツール

SQLのCREATE TABLE文を解析し、Type.Object、Type.String、Type.Number、Type.Optionalを用いた@sinclair/typeboxランタイム検証スキーマとStatic型定義へ高速変換します。

ツールを開く→
cURL から Rust (reqwest & tokio) コードジェネレーター開発ツール

cURL コマンドを、reqwest、serde_json、カスタムヘッダー、Tokio 非同期ランタイムを活用した慣用的で安全な Rust HTTP クライアントコードへ瞬時に変換します。

ツールを開く→
cURL to Ruby (Net::HTTP & Faraday) コード生成ツール開発ツール

cURLコマンドをNet::HTTP、URI、Faraday、JSON解析を活用したクリーンで慣用的なRubyコードへ瞬時に変換します。

ツールを開く→