У меня есть файл .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.