Przejdź do treści

Konwerter JSON na schemat BigQuery — Numio

Generuje schemat tabeli Google BigQuery (tablica JSON zawierająca pola nazwy, typu i trybu) z przykładowego JSON. Tablice stają się REPEATED, zagnieżdżone obiekty stają się RECORD, a wszystkie elementy tablicy są łączone w jeden schemat.

Tworzenie pliku schematu dla bq loading lub bq mk --schema z przykładowego zdarzenia lub odpowiedzi API.

JSON

Big Query Schema

Kiedy go używać

  • Tworzenie pliku schematu dla bq loading lub bq mk --schema z przykładowego zdarzenia lub odpowiedzi API.
  • Sprawdzanie, jak zagnieżdżone obiekty i tablice w zapisie dziennika są mapowane na kolumny RECORD i REPEATED przed utworzeniem tabeli.

Jak używać

  1. Wklej jeden obiekt JSON lub tablicę przykładowych rekordów do lewego edytora lub użyj przycisku ładowania pliku, aby otworzyć plik UTF-8.
  2. Przeczytaj schemat po prawej stronie; sprawdź typ wybrany dla każdego pola, szczególnie daty, ciągi numeryczne i tablice.
  3. Skopiuj tablicę JSON, w razie potrzeby dostosuj typy lub ustaw tryb na REQUIRED i zapisz jako plik schematu.

Przykładowy obiekt 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 }]
}

Schemat 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",
…

Szczegóły i ograniczenia

Ciągi znaków są wpisywane jako TIMESTAMP tylko wtedy, gdy wyglądają jak data-godzina ISO (2026-01-05T10:00:00Z), a DATE tylko dla samego YYYY-MM-DD; wszystko inne, łącznie z ciągami numerycznymi, takimi jak „02139”, pozostaje STRING.

Wartość null lub pusta tablica nie ma typu, więc staje się STRING (NULLABLE lub REPEATED), chyba że inny rekord dostarcza wartość. Tryb REQUIRED nigdy nie jest generowany.

Pola są łączone we wszystkich elementach tablicy: INTEGER z FLOAT staje się FLOAT, a inne typy będące w konflikcie wracają do STRING.

Konwersja odbywa się w Twojej przeglądarce; nic nie jest przesyłane.

FAQ

Dlaczego w mojej kolumnie sygnatury czasowej wpisano TIMESTAMP, a nie DATETIME?

Generator nie rozróżnia strefowych i lokalnych dat i godzin; dowolny ciąg daty i godziny ISO staje się TIMESTAMP. Zmień go ręcznie na DATETIME, jeśli wartości nie mają strefy czasowej.

Czy mogę wkleić tablicę rekordów?

Tak. Główna tablica obiektów jest scalana w jeden schemat, więc pole obecne tylko w niektórych rekordach jest nadal uwzględniane. NDJSON (jeden obiekt w linii) nie jest analizowany; zawijaj linie [ ] przecinkami.

Jak wpisuje się wartości null?

Jak NULLABLE STRING, gdy żadna inna próbka nie podaje wartości polu, jak pokazano na przykładzie kuponu. Podaj próbkę inną niż null lub zmień typ, jeśli kolumna jest numeryczna lub RECORD.

Specyfikacje i referencje