Автоматическая схема для таблиц с временным разделением в BigQuery - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь добавить данные в таблицу с временным разделением.Мы можем создать таблицу с временным разделением следующим образом:

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_ref = client.dataset('my_dataset')

table_ref = dataset_ref.table('my_partitioned_table')
schema = [
    bigquery.SchemaField('name', 'STRING'),
    bigquery.SchemaField('post_abbr', 'STRING'),
    bigquery.SchemaField('date', 'DATE')
]
table = bigquery.Table(table_ref, schema=schema)
table.time_partitioning = bigquery.TimePartitioning(
    type_=bigquery.TimePartitioningType.DAY,
    field='date',  # name of column to use for partitioning
    expiration_ms=7776000000)  # 90 days

table = client.create_table(table)

print('Created table {}, partitioned on column {}'.format(
    table.table_id, table.time_partitioning.field))

Мне было интересно, однако, сделать следующее без предварительного определения схемы, поскольку я ищу общий способ добавления новых данных.

Когда я удаляю схему в примере выше, я получаю сообщение об ошибке, что для таблицы с временным разделением требуется заранее определенная схема.Однако со временем мои файлы изменились, и это означает, что я не могу и не хочу переопределять свою схему (я буду использовать Google DataPrep для ее последующей очистки).

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете обновить схему таблицы при добавлении в нее новых данных.Два поддерживаемых обновления схемы - это добавление новых полей и перевод необязательных полей в необязательные.Искать schemaUpdateOptions эта страница справки :

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