使用Dataflow API执行Dataprep模板可保存流程配方中包含的时间戳

问题描述 投票:2回答:1

我有一个云功能,它使用数据流API从我使用DataPrep创建的模板创建新作业。该配方基本上清理了一些JSON对象,将它们转换为CSV格式,并添加时间戳列以获取BigQuery数据库中的所有内容。主要想法是拍摄我们平台的某些信息的快照。

我设法从数据流API运行该作业,并且数据正确插入bigquery表中,但是在timestamp字段中,时间戳的值始终相同,并且它对应于作业的执行时间。从(DataPrep模板)获取模板。当我从dataprep接口运行作业时,正确插入了此时间戳,但是当我使用云功能中的相同模板执行作业时,它不会更改。

调用数据流API的代码片段:

dataflow.projects.templates.launch({
   projectId: projectId,
   location: location,
   gcsPath: jobTemplateUrl,
   resource: {
     parameters: {
       inputLocations : `{"location1" :"gs://${file.bucket}/${file.name}"}`,
       outputLocations: `{"location1" : "${location2}"}`,
       customGcsTempLocation: `gs://${destination.bucket}/${destination.tempFolder}`
     },
      environment: {
        tempLocation: `gs://${destination.bucket}/${destination.tempFolder}`,
        zone: "us-central1-f"
     },
     jobName: 'user-global-stats-flow',

   }
 }

这是Dataflow执行控制台快照,因为可以看到最新的作业是从云功能执行的作业,底部的作业是从Dataprep接口执行的:

Dataflow console snapshot

这是负责创建时间戳的食谱的一部分:

Dataprep recipe sample

最后,这是在BigQuery表中插入的内容,其中第一个具有相同时间戳(第4行)的插入对应于从Dataprep执行的作业,其余是使用Dataflow API从云函数执行:

Big Query Insertions

所以问题是我是否可以在插入的作业执行时间内使时间戳得到解决,因为现在它看起来像是在模板的配方中修复了。

感谢您的帮助。

google-bigquery google-cloud-functions google-cloud-dataflow google-cloud-dataprep
1个回答
0
投票

如果我理解正确,这是记录在案的行为。从known limitations when running a Dataprep template through Dataflow列表:

所有相关函数都是根据执行时刻计算的。执行Cloud Dataflow模板时,不会重新计算NOW()和TODAY等函数。

© www.soinside.com 2019 - 2024. All rights reserved.