Startseite
BigQuery Schema

JSON zu Google BigQuery Tabellenschema Generator

RECORD & NDJSON

Analysieren und konvertieren Sie JSON-Objekte in Google Cloud BigQuery-Tabellenschema-JSON mit RECORD-Modus, STRING-, INTEGER-, NUMERIC- und TIMESTAMP-Feldern.

Presets:
BigQuery Schema-Optionenecommerce_dw.fact_order_events
Eingabe JSON / NDJSON / JSONL Nutzlast
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]
Schema-Felder & Spalten33 Spalten (30 erforderlich)
Hierarchie & Struct-VerschachtelungLevel 0 Tiefe (3 verschachtelte Datensätze)
Feldmodi & NullwertePartition: event_timestamp • Standard SQL

100% BigQuery-Schemainferenz im Browser

Keine Server-Uploads oder Cloud-APIs. Komplexe JSON-Bäume, tiefe Structs und NDJSON-Batches werden direkt im Browser-Speicher analysiert.

Produktionsreifes BigQuery-Typsystem

Präzise Zuordnung von JSON-Datentypen zu Standard-SQL INT64, NUMERIC, TIMESTAMP, DATE, GEOGRAPHY und RECORD mit NULLABLE, REQUIRED oder REPEATED.

Multi-Target Cloud-Plattform-Export

Tabellendefinitionen für bq CLI, Google Cloud Terraform/Pulumi IaC, BigQuery Python SDK und ANSI SQL DDL mit Partitionierung exportieren.

Technische Referenz & Architektur-Leitfaden

JSON zu Google BigQuery Tabellenschema Generator — Referenz-Leitfaden

Analysieren und konvertieren Sie JSON-Objekte in Google Cloud BigQuery-Tabellenschema-JSON mit RECORD-Modus, STRING-, INTEGER-, NUMERIC- und TIMESTAMP-Feldern.

Wichtige Parameter & Steuerelemente

defaultModestring

Legt den standardmäßigen Nullwert-Modus (NULLABLE oder REQUIRED) für primitive Felder der obersten und geschachtelten Ebenen fest.

Standard: NULLABLE
timestampDetectionboolean

Erkennt automatisch ISO 8601-Datumszeichenfolgen (z. B. 2026-10-17T04:49:28Z) und weist ihnen TIMESTAMP statt generischem STRING zu.

Standard: true
numericPrecisionstring

Steuert die Zuordnung von Dezimalzahlen: FLOAT64 für wissenschaftliche Daten oder NUMERIC / BIGNUMERIC für exakte Finanzberechnungen.

Standard: NUMERIC
sanitizeFieldNamesboolean

Wandelt unzulässige JSON-Schlüssel (Bindestriche, Leerzeichen, führende Ziffern) in gültige BigQuery-Spaltennamen ([a-zA-Z_][a-zA-Z0-9_]*) um.

Standard: true

Profi-Tipps & Best Practices

Bei Newline-Delimited JSON

Bei Newline-Delimited JSON (NDJSON) sollten mehrere unterschiedliche Datensätze analysiert werden, damit optionale und spärliche Felder im finalen Schema nicht fehlen.

Verwenden Sie für Währungsbeträge den

Verwenden Sie für Währungsbeträge den Typ NUMERIC (bis zu 38 Stellen Festkommapräzision) oder BIGNUMERIC anstelle des IEEE 754-Standards FLOAT64.

Direkter Datenimport mit der bq CLI

Speichern Sie das Schema als schema.json und laden Sie NDJSON-Dateien direkt: bq load --source_format=NEWLINE_DELIMITED_JSON my_dataset.my_table gs://my-bucket/data.json ./schema.json

Geschachtelte Arrays modellieren

Objekt-Arrays werden als type: 'RECORD' mit mode: 'REPEATED' abgebildet. Stellen Sie sicher, dass untergeordnete Felder korrekt als NULLABLE definiert sind.

Häufige Fallstricke & Fehlerbehebung

Ungültiger Spaltenname: 'Fields must contain only letters, numbers, and underscores'

Aktivieren Sie sanitizeFieldNames oder benennen Sie Schlüssel mit Bindestrichen (user-id) oder Punkten manuell in Snake_Case (user_id) um.

Typkonflikte zwischen Datensätzen (z. B. Zeile 1 ist INTEGER, Zeile 2 ist STRING)

Bereinigen Sie die Datenquelle, erweitern Sie den Feldtyp im Schema auf STRING oder nutzen Sie den nativen BigQuery JSON-Datentyp.

Maximale Schachtelungstiefe von 15 Ebenen überschritten

BigQuery begrenzt geschachtelte STRUCT-Felder auf maximal 15 Ebenen. Flachen Sie tief verschachtelte Bäume ab oder speichern Sie Subbäume in einer JSON-Spalte.

Häufig gestellte Fragen (FAQ)

Wie werden verschachtelte JSON-Objekte und Arrays in BigQuery-Schemata abgebildet?▼

Ein JSON-Objekt entspricht dem Typ RECORD (STRUCT). Ein Array primitiver Werte wird mit mode: 'REPEATED' dargestellt. Ein Array von Objekten wird zu type: 'RECORD' mit mode: 'REPEATED' und einem untergeordneten 'fields'-Array.

Wie lade ich Daten mit der generierten schema.json in BigQuery?▼

Führen Sie den Befehl 'bq load --source_format=NEWLINE_DELIMITED_JSON my_dataset.my_table data.ndjson ./schema.json' im Google Cloud SDK aus oder übergeben Sie die Schema-Definition per BigQuery REST API bzw. Client-Bibliothek.

Wann sollte der native BigQuery JSON-Typ statt eines expliziten Schemas verwendet werden?▼

Nutzen Sie feste Schemata für höchste Abfrageleistung, Partitionierung, Clustering und strikte Validierung. Den nativen JSON-Typ empfiehlt sich bei häufig wechselnden Attributen, polymorphen Payloads oder rohen Log-Streams.

Welche Beschränkungen gelten für BigQuery-Spaltennamen?▼

Namen müssen zwischen 1 und 300 Zeichen lang sein, mit einem Buchstaben oder Unterstrich beginnen und dürfen nur Buchstaben, Zahlen und Unterstriche enthalten. Bei SQL-Abfragen wird Groß-/Kleinschreibung ignoriert.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →