此错误通常是由于向现有表添加分区列或更改现有分区列的数据类型而引起的。要解决此错误,可以使用以下代码示例进行操作,这将向现有表中添加一个INT64类型的分区列:
# 定义新分区列的模式
from google.cloud import bigquery
new_schema = [
bigquery.SchemaField('partition_column', 'INT64', mode='REQUIRED')
]
# 获得现有表的引用
client = bigquery.Client()
table_ref = client.dataset('dataset_name').table('table_name')
table = client.get_table(table_ref)
# 更新现有表的模式以包括新分区列
table.schema = table.schema + new_schema
table = client.update_table(table, ['schema'])
# 向新分区列添加数据
query_job = client.query(
'''
UPDATE `project_name.dataset_name.table_name`
SET partition_column =
WHERE
'''
)
query_job.result()
请注意,需要替换示例代码中的以下内容:
dataset_name
:数据集的名称。table_name
:表的名称。project_name
:正在使用的Google Cloud项目的名称。
:新的分区列的名称。
:要添加到新分区列中的值。
:更新数据的条件。执行此代码后,现有表将包括新的分区列,并且可以使用此列将数据分区。
上一篇:Bigquery参数化子查询