GCP Dataflow API不评估在dataprep上编写的配方中调用的now / today()函数

时间:2018-09-25 08:40:54

标签: google-cloud-dataflow google-cloud-dataprep

启动API dataflow.projects.locations.templates.launch(我也测试了“创建” api)后,使用之前在dataprep上生成的模板,使用today()函数生成的列(我也测试了“ now ()“函数)似乎在作业执行期间未评估。 报告的日期始终填充首次创建模板的日期。

这是正确的行为吗? 为什么在该列中未填入开始工作的日期?

1 个答案:

答案 0 :(得分:0)

这确实是预期的行为,并且实际上在文档页面的"Known Limitations" section中有关于在Cloud Dataflow上运行Dataprep作业的记录:

  

由TRIFACTA作业从Cloud Dataprep生成的Cloud Dataflow模板旨在用作当前执行的作业的静态副本

     
      
  • 所有相关功能均基于执行时刻计算。执行Cloud Dataflow模板时,NOW()和TODAY之类的函数不会重新计算。
  •   
  • 要更新这些功能的输出值,请TRIFACTA通过UI或计划的作业在Cloud Dataprep中重新运行作业。然后,执行Cloud Dataflow模板作业。
  •   

因此,如上面的文档摘要所述,为了获取TODAY() / NOW()函数的当前值,您将需要在Dataprep中重新运行作业并执行模板


侧面注意事项:如果您有兴趣了解这种现象的发生原因,尽管您可以将其视为有用的数据,但我还是建议您仔细阅读Dataflow templates documentation这不适用于Dataprep模板(无法自定义)。假设TODAY()NOW()之类的函数应作为运行时参数传递,因为该值将在执行时更改。为了启用运行时参数,Dataflow提供了ValueProvider接口。