2

因此,我们使用现有的设置为每天创建一个新表,这与"WRITE_TRUNCATE"选项无关,但是当我们更新我们的代码以使用分区表时,尽管我们的数据流作业,它不会与write_truncate一起使用。通过Google Dataflow/Beam通过write_truncate将数据加载到Biqquery分区表中

它工作得很好,写处理设置为“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) 

这给错误:

Table IDs must be alphanumeric

,因为它试图重新创建表,我们在讨论提供分区装饰。

下面是一些i`v尝试过的事情:

  1. 更新write_disposition为WRITE_APPEND,虽然它的工作原理,它失败的目的,因为再次为同一日期运行将重复数据。
  2. 使用

bq --apilog /tmp/log.txt load --replace --source_format=NEWLINE_DELIMITED_JSON 'table.$20160101' sample_json.json

命令,看看我是否能观察到任何日志,对如何真正截断工作的基础上,link,我发现。

  1. 尝试了其他一些links,但这也使用WRITE_APPEND。

有没有办法使用write_truncate方法从数据流作业写入分区表?

让我知道是否需要任何额外的细节。 谢谢

+0

未能用分区装饰器创建表可能是一个错误。让我检查并回复你。 – Pablo

+0

您可以为您的'表格ID必须为字母数字'提供堆栈跟踪吗? – Pablo

+0

我用IO dev进行了检查。看来这现在不支持。 :/ – Pablo

回答

0

目前不支持这种似乎。 可以通过@Pablo查找来自IO开发人员的信息。

根据Github页面上的Beam documentation,他们的JIRA page将适合请求这样的功能。我建议在那里提交功能请求,并在此处发布评论中的链接,以便社区中的其他人可以关注并显示他们的支持。

相关问题