Python Google BigQuery写入\u截断删除所有数据

Python Google BigQuery写入\u截断删除所有数据,python,python-3.x,google-bigquery,Python,Python 3.x,Google Bigquery,我在BQ中有一个表设置,如果我在某个日期分区写入存在的数据,我希望它被覆盖。我已将作业配置设置为使用WRITE\u TRUNCATE #file_obj = Some ndjson StringIO file like obj job_config = bigquery.QueryJobConfig() # Set configuration.query.destinationTable dest_dataset = 'test' dest_table_name = 'sales_data'

我在BQ中有一个表设置,如果我在某个日期分区写入
存在的数据,我希望它被覆盖。我已将作业配置设置为使用WRITE\u TRUNCATE

#file_obj = Some ndjson StringIO file like obj

job_config = bigquery.QueryJobConfig()
# Set configuration.query.destinationTable
dest_dataset = 'test'
dest_table_name = 'sales_data'
destination_dataset = client.dataset(dest_dataset)
destination_table = destination_dataset.table(dest_table_name)
job_config.destination = destination_table

# Set configuration.query.writeDisposition & SourceFormat
job_config.write_disposition = 'WRITE_TRUNCATE'
job_config.source_format = bigquery.SourceFormat.NEWLINE_DELIMITED_JSON

# Set partitioning
time_partitioning = bigquery.table.TimePartitioning(
    bigquery.table.TimePartitioningType.DAY, 'date'
)
job_config.time_partitioning = time_partitioning

# Start the load job
job = client.load_table_from_file(
        file_obj, destination_table,
        job_config=job_config
)
# Wait for the job to finish
job.result()
但是,我注意到,当我回填数据时,它总是覆盖表中的所有数据,即使日期分区不同。例如,如果我的表中有来自
20190101-20190201
的数据,并且我从
20190202当前加载数据
我的整个表将被擦除,它只包含新数据。由于数据位于不同的分区日期,该数据不应该保留吗?你知道为什么会这样,或者我是否遗漏了什么吗

你知道为什么会这样,或者我是否遗漏了什么吗

< P>JooSoop.WrreEdTys=“WrreEXTrAcTATE”是整个表范围动作-并表示<代码>如果表已经存在,则重写表数据。< /代码>不考虑任何分区,并影响整个表


如果您需要覆盖特定的分区,您需要特别引用该分区-例如作为
sales\u data$20190202

,因此,例如,如果我有3年的数据要加载,从例如
20190424
返回到
20160424
分区的末尾将放在什么日期室内装修设计师是否为销售数据$20190424
?对不起,我对这个概念有点陌生。基本上,我希望在滚动的基础上保持历史数据的完整性,并且只覆盖具有相同日期的数据。。所以明天运行api时,我只想覆盖表中某一天已经存在的任何数据。。。如果那一天不在表中,则保持原样。同样对于分区装饰器覆盖,我是否仍要使用
WRITE\u TRUNCATE
或其他方法?我觉得,我已经回答了您最初的问题。如果您有更多和/或后续问题超出了初始问题的范围-请发布新问题,我们将非常乐意为您提供帮助。这就是它的工作原理。同时,请考虑投票,接受问题,如果它有助于在原来的问题,我提出了另一个问题,如果你可以请看一看