Google BigQuery: SELECT с таблицей назначения переопределяет режимы полей на NULLABLE - PullRequest
0 голосов
/ 20 апреля 2020

Я пишу инструмент для обновления моих таблиц больших запросов, чтобы они отражали мои локально определенные схемы. Допустим, я обновляю таблицу users. Для этого необходимо выполнить следующие шаги:

  1. Создать новую таблицу с новой схемой, которая называется users_update.

  2. Создать SELECT запрос, в котором приводятся значения (например, TIMESTAMP в DATETIME) и добавляются новые столбцы (например, CURRENT_TIMESTAMP() as date_updated)

  3. Запустите QueryJob (python), чтобы выполнить запрос с новой таблицей в качестве пункта назначения.

  4. Удалить таблицу users

  5. Скопировать users_update в users

  6. Удалить таблицу users_update

Проблема состоит в том, что этот запрос преобразует каждое поле в новой таблице в NULLABLE. Я прошел через мой скрипт и убедился, что в новой таблице есть правильные режимы перед QueryJob. Я также предоставляю новую схему (с правильными режимами) для QueryJob.

Есть ли какие-то параметры для QueryJob, которые мне нужно установить, или чего мне здесь не хватает?

1 Ответ

1 голос
/ 20 апреля 2020

Я установил job_config.write_disposition на WRITE_TRUNCATE. Удаление этой проблемы решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...