Получение «Недопустимого обновления схемы. Невозможно добавить поля» из BQ с установленным ALLOW_FIELD_ADDITION в конфигурации - PullRequest
0 голосов
/ 19 декабря 2018

Следующий фрагмент кода Python вызывает ошибку в заголовке:

job_config = bigquery.QueryJobConfig()
# Set the destination table
table_ref = client.dataset(args.bq_dataset_id).table(args.bq_cum_table)
job_config.destination = table_ref
job_config.write_disposition = 'WRITE_APPEND'
job_config.schemaUpdateOptions = ['ALLOW_FIELD_ADDITION', 'ALLOW_FIELD_RELAXATION']

# Start the query, passing in the extra configuration.
query_job = client.query(
    sqlstr,
    # Location must match that of the dataset(s) referenced in the query
    # and of the destination table.
    location="US",
    job_config=job_config,
)  # API request - starts the query

query_job.result()  # Wait for the query to finish

Я работаю с «Запись результатов запроса в таблицу назначения» здесь , но сдополнительные настройки конфигурации 'ALLOW_FIELD_ADDITION' и 'ALLOW_FIELD_RELAXATION', чтобы (как я думал) включить добавление дополнительных столбцов к целевой таблице.Схема данных, которые я пытаюсь добавить, вероятно, не надмножеством схемы целевой таблицы.И у меня нет никакого контроля над порядком элементов в результате запроса, в случае либо если эти соображения имеют значения.

1007 * Я использую стандартный SQL.Запрос выглядит так:

SELECT `StudyDate`,` SeriesDate`, `AcquisitionDate` FROM` project.dataset.table` LIMIT 1

Это мое первое использование библиотеки Python BQ, поэтомуЯ не удивлюсь, если я что-то упускается из виду.

1013 * Спасибо.

1 Ответ

0 голосов
/ 20 декабря 2018

Вы делаете все правильно, за исключением одной маленькой ошибки.

job_config.schemaUpdateOptions - это поле, которое не существует в BigQuery Python API .Измените его на job_config.schema_update_options, и ваш код будет работать должным образом.

Кроме того, приведено несколько примеров , показывающих, как изменить схему таблицы BigQuery с помощью Python.

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