Загрузка данных BigQuery в режиме добавления завершается с разделом куста - PullRequest
2 голосов
/ 04 мая 2020

У меня есть следующая структура данных в моем GCS

gs://BUCKET/inventory/date=2019-01-01/val=4/data.json
gs://BUCKET/inventory/date=2019-01-01/val=5/data.json

gs://BUCKET/inventory/date=2019-01-02/val=4/data.json
..

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

job_config = bigquery.LoadJobConfig()
hive_partitioning = bigquery.external_config.HivePartitioningOptions()
hive_partitioning.mode = "AUTO"
hive_partitioning.source_uri_prefix = "gs://BUCKET/inventory" #path to hive partition data

job_config.hive_partitioning=hive_partitioning
job_config.autodetect = True
job_config.source_format="NEWLINE_DELIMITED_JSON"
job_config.write_disposition = bigquery.WriteDisposition.WRITE_APPEND

uri = "gs://BUCKET/inventory/*.json"    #path to data

output_dataset_ref = client.dataset("dataset_name")
load_job = client.load_table_from_uri(
    uri, output_dataset_ref.table("table_name"), job_config=job_config
)  # API request

load_job.result()  # Waits for table load to complete.
print("Load complete for table {}".format("table_name"))

Конфигурация задания может обнаруживать столбцы разделов кустов, такие как дата и значение. Но работа завершается с ошибкой, говоря, что столбец даты уже существует.

Однако, если я пытаюсь загрузить данные в новую таблицу, этот код работает и также может добавить разделенные столбцы Hive. Сбой возможен только в случае добавления к существующей таблице.

подробное сообщение об ошибке

google.api_core.exceptions.BadRequest: 400 Ошибка при чтении данных, сообщение об ошибке: не удалось добавить раздел контрольную дату (тип: TYPE_DATE) для схемы, поскольку другой столбец с таким же именем уже присутствовал. Это не разрешено Полная схема раздела: [date: TYPE_DATE, val: TYPE_INT64].

Я считаю, что есть какая-то проблема с SDK, исправьте меня, если я ошибаюсь.

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