我想在Bigquery中使用以下方法截断表的内容 write_truncate
但它没有发生,相反,它的工作方式就像 write_append
. 它在追加数据,但没有截断表。
谁能帮忙解决一下这个问题。
我的代码
with beam.Pipeline(options=Pipeline options()) as p:
read=(p|"Read BQ">>beam.io.Read(beam.io.BigQuerySource(
query='select empid from'\'`PRoject_Id.data_set.emp_details`',
use_standard_sql=True))|"process">>beam.Map(lambda ele:{'EMPID':ele['EMPID']})|
"Write">>beam.io.WriteToBigQuery(
'PROJECT_ID:data_set.emp_out',
schema='EMPID:STRING',
write_disposition=beam.io.BigQueryDisposition.WRITE_TRUNCATE,
create_dispositiom=beam.io.BigQueryDisposition.CREATE_IF_NEDED))
if __name__="__main__":
run().wait_until_finish()
在流式管道的情况下,WRITE_TRUNCATE是不支持的,如文档中所述 此处.
For streaming pipelines WriteTruncate can not be used.
你可以将你的管道转换为批处理,并使用WRITE_TRUNCATE选项。要将写转换为批处理,你可以设置 method
参数为 FILE_LOADS
. 默认情况下,该参数设置为 STREAMING_INSERTS
.