数据流模板

时间:2017-10-05 21:35:52

标签: python google-cloud-dataflow apache-beam

我编写了一个Dataflow作业,当我手动运行它时效果很好。以下是相关部分(为清楚起见,删除了一些验证码):

parser.add_argument('--end_datetime',
                    dest='end_datetime')
known_args, pipeline_args = parser.parse_known_args(argv)

query = <redacted SQL String with a placeholder for a date>
query = query.replace('#ENDDATETIME#', known_args.end_datetime)

with beam.Pipeline(options=pipeline_options) as p:
    rows = p | 'read query' >> beam.io.Read(beam.io.BigQuerySource(query=query, use_standard_sql=True))

现在我想创建一个模板并安排它使用动态ENDDATETIME定期运行。据我了解,为了做到这一点,我需要根据这个文档将add_argument更改为add_value_provider_argument:

https://cloud.google.com/dataflow/docs/templates/creating-templates

不幸的是,当我需要时,ValueProvider值似乎不可用,它们只能在管道本身内部使用。 (如果我在这里错了,请纠正我......)。所以我有点卡住了。

有没有人对如何在Dataflow模板中获取动态日期进行查询?

1 个答案:

答案 0 :(得分:4)

Python目前仅支持FileBasedSource IO的ValueProvider选项。您可以通过单击您使用的链接上的Python选项卡来查看: https://cloud.google.com/dataflow/docs/templates/creating-templates

在“管道I / O和运行时参数”部分下。