JSON naar BigQuery schemaconverter — Numio
Genereert een Google BigQuery-tabelschema (een JSON-array met naam-, type- en modusvelden) op basis van voorbeeld JSON. Arrays worden REPEATED, geneste objecten worden RECORD en alle elementen van een array worden samengevoegd tot één schema.
Een schemabestand opstellen voor bq load of bq mk --schema op basis van een voorbeeldgebeurtenis of API-antwoord.
JSON
Big Query Schema
Wanneer gebruik je dit?
- Een schemabestand opstellen voor bq load of bq mk --schema op basis van een voorbeeldgebeurtenis of API-antwoord.
- Controleren hoe geneste objecten en matrices in een logrecord worden toegewezen aan de kolommen RECORD en REPEATED voordat een tabel wordt gemaakt.
Hoe werkt het
- Plak één JSON-object of een reeks voorbeeldrecords in de linkereditor, of gebruik de knop Bestand laden om een UTF-8-bestand te openen.
- Lees het schema hiernaast; controleer het type dat voor elk veld is gekozen, vooral datums, numerieke reeksen en arrays.
- Kopieer de JSON-array, pas de typen aan of stel de modus waar nodig in op REQUIRED en sla deze op als een schemabestand.
JSON voorbeeldobject
{
"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-schema 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",
…Details en beperkingen
Tekenreeksen worden alleen als TIMESTAMP getypt als ze eruit zien als een ISO datum-tijd (2026-01-05T10:00:00Z) en DATE alleen voor een kale YYYY-MM-DD; al het andere, inclusief numerieke reeksen zoals "02139", blijft STRING.
Een nulwaarde of een lege array heeft geen type en wordt dus STRING (NULLABLE of REPEATED), tenzij een ander record een waarde levert. Modus REQUIRED wordt nooit gegenereerd.
Velden worden samengevoegd over alle array-elementen: INTEGER met FLOAT wordt FLOAT, en andere conflicterende typen vallen terug op STRING.
Conversie wordt uitgevoerd in uw browser; er wordt niets geüpload.
FAQ
Waarom is mijn tijdstempelkolom getypt TIMESTAMP en niet DATETIME?
De generator maakt geen onderscheid tussen gezoneerde en lokale datum-tijden; elke datum-tijdreeks ISO wordt TIMESTAMP. Wijzig dit handmatig in DATETIME als de waarden geen tijdzone hebben.
Kan ik een reeks records plakken?
Ja. Een rootarray van objecten wordt samengevoegd tot één schema, zodat een veld dat slechts in enkele records aanwezig is, nog steeds wordt opgenomen. NDJSON (één object per regel) wordt niet geparseerd; wikkel de regels tussen [ ] met komma's.
Hoe worden nulwaarden getypt?
Als NULLABLE STRING wanneer geen enkel ander voorbeeld het veld een waarde geeft, zoals coupon in het voorbeeld laat zien. Geef een niet-null voorbeeld op, of bewerk het type, als de kolom numeriek is of een RECORD.