如何 运行 一个大查询计划查询一旦另一个大查询计划查询 运行

How to run a big query schedule query as soon as another big query schedule query has run

我在通过另一个计划大查询作业触发计划大查询作业时遇到问题。 我有 2 个大查询 tables,一旦文件被放置在 google 云存储桶中就会被加载。我有 2 个数据流作业触发进程并加载大查询 tables。使用云功能和 pub sub topic ,我触发了这 2 tables 的时间表查询。我很容易为数据流作业创建一个过滤器,它将触发我的计划查询。例如如下

protoPayload.methodName="jobservice.jobcompleted"
protoPayload.serviceData.jobCompletedEvent.job.jobStatus.state="DONE"
protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.tableId="table_name"
protoPayload.serviceData.jobCompletedEvent.job.referencedTables.datasetId="big query dataset name"
protoPayload.serviceData.jobCompletedEvent.job.referencedTables.projectId="my project id"

这工作正常并且触发了计划查询。我对其他 table.

也有类似的检查

现在,我面临的问题是,一旦我之前的计划查询 运行 正常,我需要触发另一个计划查询,这就是挑战。 我唯一能想到的可以根据以下过滤日志

    protoPayload.methodName="jobservice.jobcompleted"
    protoPayload.serviceData.jobCompletedEvent.job.jobStatus.state="DONE"
  protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.labels.data_source_id="scheduled_query"

但是,上面为我提供了项目中所有计划查询 运行ning 的日志,我正在寻找一个特定的项目。我的调度查询之前有 运行 有很多插入和很少的更新语句,因此 table id 为零 there.The 唯一独特的是每个调度查询日志中存在的查询, 您认为我是否需要将多个查询 运行ning 中的最后一个查询添加为我的计划查询的一部分以过滤日志并且表示计划查询已完成?例如下面

protoPayload.methodName="jobservice.jobcompleted"
protoPayload.serviceData.jobCompletedEvent.job.jobStatus.state="DONE"
protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.labels.data_source_id="scheduled_query"
protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.query="UPDATE `whr-asia-datalake-nonprod.WHR_DATALAKE.CONSUMER_EXTRACT` CEXT SET CEXT.CUST_MOBILE=If ( length(SAFE_CAST(CEXT.CUST_MOBILE AS STRING))=10,SAFE_CAST(CONCAT('91',CEXT.CUST_MOBILE) AS Numeric),CEXT.CUST_MOBILE) WHERE TRUE"

然而,上面没有给出任何日志。 请告知,因为我被卡住了,需要在产品中部署它。

您可以使用计划查询 pubsub 通知功能来获取执行过程的更新。在 Cloud Functions 中,接收和处理 PubSub 消息并检查状态值,完成后,像第一次一样触发您的计划查询。