Python 使用write_truncate通过googledataflow/Beam将数据加载到Biqquery分区表中
因此,我们使用的现有设置是每天创建一个新表,使用option可以很好地工作,但是当我们更新代码以使用分区表时,尽管我们的数据流作业无法使用write_truncate 它工作得非常好,将write disposition设置为“write_APPEND”(根据我的理解,从,它可能尝试删除表,然后重新创建),因为我提供了表装饰器,它无法创建新表 使用python代码的示例代码段:Python 使用write_truncate通过googledataflow/Beam将数据加载到Biqquery分区表中,python,google-bigquery,google-cloud-dataflow,apache-beam,Python,Google Bigquery,Google Cloud Dataflow,Apache Beam,因此,我们使用的现有设置是每天创建一个新表,使用option可以很好地工作,但是当我们更新代码以使用分区表时,尽管我们的数据流作业无法使用write_truncate 它工作得非常好,将write disposition设置为“write_APPEND”(根据我的理解,从,它可能尝试删除表,然后重新创建),因为我提供了表装饰器,它无法创建新表 使用python代码的示例代码段: beam.io.Write('Write({})'.format(date), beam.io.BigQuerySin
beam.io.Write('Write({})'.format(date), beam.io.BigQuerySink(output_table_name + '$' + date, create_disposition=beam.io.BigQueryDisposition.CREATE_NEVER, write_disposition=beam.io.BigQueryDisposition.WRITE_TRUNCATE)
这就产生了错误:
表ID必须是字母数字
因为它试图重新创建表,我们在参数中提供了分区装饰器
以下是我尝试过的一些事情:
bq--apilog/tmp/log.txt加载--replace--source_format=NEWLINE_DELIMITED_JSON'表。$20160101'sample_JSON.JSON
命令,以查看是否可以观察任何日志,根据我发现的日志,了解truncate实际上是如何工作的
谢谢目前似乎不支持此功能。@Pablo从IO-dev那里了解到了这一点,这应该归功于@Pablo
根据Github页面上的,他们的应用程序将适合请求这样的功能。我建议在那里提交一个功能请求,并在这里的评论中发布一个链接,以便社区中的其他人能够跟进并表示支持。未能使用分区装饰器创建表可能是一个错误。让我检查一下,然后再给您回复。您能为“表ID必须是字母数字”提供堆栈跟踪吗?我和IO开发人员进行了检查。现在似乎不支持这一点:/感谢您回复Pablo:),我只是希望它不会删除TRUNCATE的表,而只是清除该分区的所有行,但我猜它不会这样工作。