BigQuery Manual stwierdza, że możliwe jest dodanie nowego pola, ale nie modyfikuj istniejącego. Moje pytanie brzmi, czy możliwe jest dodanie istniejącego pola do pola rekordu. Powiedz, że oryginalny schemat to:

{"type":"RECORD","name":"record","mode":"REPEATED"
 "fields":[
    {"type":"STRING","name":"f1","mode":"NULLABLE"}
  ]
}

I chciałbym dodać F2, więc schemat byłby:

{"type":"RECORD","name":"record","mode":"REPEATED"
 "fields":[
    {"type":"STRING","name":"f1","mode":"NULLABLE"},
    {"type":"STRING","name":"f2","mode":"NULLABLE"}
  ]
}

Czy to możliwe?

1
Oded Badt 13 styczeń 2020, 18:35

1 odpowiedź

Najlepsza odpowiedź

Dodanie nowego pola do struktury nie jest obsługiwane w konsoli, ale możesz dodać go za pomocą bigquery CLI, jak widać Oto

W trybie konsoli:

Dodawanie nowego zagnieżdżonego pola do istniejącej kolumny rekordu nie jest obecnie obsługiwane przez Classic BigQuery Web UI.

Korzystanie z bigquery CLI:

W tej opcji możesz utworzyć nowy schemat i używać bq update project_id:dataset.table schema, aby zaktualizować tabelę.

Jak można znaleźć w linku:

  1. Najpierw, Wydaj polecenie BQ Pokaż z flagą --Schema i napisz istniejący schemat tabeli do pliku. Jeśli tabela, którą aktualizujesz W projekcie inny niż twój domyślny projekt, dodaj identyfikator projektu Nazwa danych w następującym formacie: Project_id: DataSet.Table. [...]
bq show \
--schema \
--format=prettyjson \
project_id:dataset.table > schema_file
  1. Otwórz plik schematu w edytorze tekstu. Schemat powinien wyglądać jak następujący. W tym przykładzie kolumna3 jest zagnieżdżoną wielokrotną kolumną. Zagnieżdżone kolumny są zagnieżdżone1 i zagnieżdżone2. Array pól wymienia Pola zagnieżdżone w kolumnie3. [...]
  2. Dodaj nową zagnieżdżoną kolumnę na koniec tablicy pól. W tym przykładzie NELESTED3 jest nową zagnieżdżoną kolumną. [...]
  3. Po zaktualizowaniu pliku schematu, wydać następujące polecenie, aby zaktualizować schemat tabeli. Jeśli aktualizowana tabela jest w a Projekt inny niż twój domyślny projekt, dodaj identyfikator projektu do Nazwa danych W poniższym formacie: Project_id: DataSet. [...]

bq update mydataset.mytable /tmp/myschema.json

Mam nadzieję, że to pomoże

4
rmesteves 13 styczeń 2020, 16:16