BigQuery中按时间划分的表的自动模式

时间:2019-02-18 14:07:01

标签: python google-bigquery

我正在尝试将数据追加到按时间划分的表中。我们可以创建一个按时间划分的表,如下所示:

# 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 :(得分:0)

在向表中添加新数据时,可以更新表的架构。受支持的两个架构更新是添加新字段,并将必填字段放松为可选字段。搜索schemaUpdateOptions this help page