Установить схему только для одного столбца в BigQuery - PullRequest
0 голосов
/ 23 января 2019

У меня есть файл .csv, который я хочу добавить в свой набор данных / таблицу BigQuery, для которого один столбец имеет формат dd.mm.yyyy. Поскольку я хотел бы работать с секционированными таблицами, мне нужен один столбец в формате DATE.

Однако я не уверен, как установить схему только для одного столбца. Я попробовал следующее:

from google.cloud import bigquery as bq

dataset_ref                     = client.dataset(dataset_id)
table_ref                       = dataset_ref.table(table_id)

job_config                      = bq.LoadJobConfig()
job_config.write_disposition    = bq.WriteDisposition.WRITE_APPEND

job_config.source_format        = bq.SourceFormat.CSV
job_config.field_delimiter      = delimiter
job_config.skip_leading_rows    = 1
job_config.autodetect           = True

job_config.schema_update_options = [
    bq.SchemaUpdateOption.ALLOW_FIELD_ADDITION,
]
job_config.schema = [
    bq.SchemaField('date_col', 'DATE')
]

job = client.load_table_from_file(
    source_file,
    table_ref,
    location="europe-west2",  # Must match the destination dataset location.
    job_config=job_config)  # API request

job.result() # Waits for table load to complete.

но выдает ошибку:

google.api_core.exceptions.BadRequest: 400 Ошибка при чтении данных, сообщение об ошибке: таблица CSV обнаружила слишком много ошибок, отказываясь. Ряды: 1; ошибки: 1. Пожалуйста, посмотрите в коллекцию ошибок [] для более подробности.

Когда я убираю опцию .schema, она работает нормально, но затем импортирует столбец как STRING.

1 Ответ

0 голосов
/ 23 января 2019

Вы не можете указать только один столбец в схеме, поскольку все имена и типы столбцов требуются при его установке .С другой стороны, дата в формате dd.mm.yyyy не может быть проанализирована как DATE при загрузке в BigQuery, поэтому вам нужно загрузить ее как STRING, а затем проанализировать после импорта в BigQuery.В противном случае вам придется изменить формат данных на YYYY-MM-DD.

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