Google 数据流:使用运行时参数创建模板

Google Dataflow: create templates with runtime parameters

在数据流中,我需要将开始日期和结束日期作为运行时参数传递,并查询该日期范围的 bigquery,并将输出写入日期明智的文件夹。

当我们使用 ValueProvider 时,getStartDate().get() 方法抛出 java.lang.RuntimeException:不是从运行时上下文中调用。如果我在 getStartDate().get().isAccessible() 为 false 时对某些值进行硬编码,则会生成模板,但运行时参数不会反映在作业中。它始终是 运行 模板创建期间的硬编码值。

有什么建议吗?

BigQueryIO 接受查询的 ValueProvider。最简单的方法是将查询文本作为运行时值传递。

NestedValueProvider 可以帮助您从另一个值提供程序创建查询字符串,唉,NestedValueProvider 一次只支持一个输入 ValueProvider。因此,您可以将开始日期和结束日期连接成一个值,然后进行拆分。