因此我们使用现有的设置为每天创建一个新表,它与"WRITE_TRUNCATE"选项一起正常工作,但是当我们更新代码以使用分区表时,虽然我们的数据流工作,但它不会使用write_truncate。
它工作得很好,写入处理设置为“WRITE_APPEND”(根据我的理解,从beam,它可能会尝试删除表,然后重新创建它),因为我提供表装饰者无法创建新表。
使用python代码的示例代码段:
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 load --replace --source_format=NEWLINE_DELIMITED_JSON 'table.$20160101' sample_json.json
命令,根据我找到的link查看是否可以观察任何日志,截断实际上是如何工作的。
有没有办法使用write_truncate方法从数据流作业写入分区表?
如果需要任何其他详细信息,请与我们联系。 感谢
答案 0 :(得分:1)
此时似乎不支持此类似乎。 Credit从@Pablo转到IO dev。
根据Github页面上的Beam documentation,他们的JIRA page将适合请求此类功能。我建议在那里提交功能请求并在评论中发布链接,以便社区中的其他人可以跟进并显示他们的支持。