我有问题触发一个调度大查询作业通过另一个调度大查询作业。我有两个大的查询表,一旦文件放在谷歌云桶中就会被加载。我有两个数据流作业,它触发进程并加载大的查询表。使用云函数和发布子主题,我为这两个表触发调度查询。对于我来说,为数据流作业创建一个过滤器非常容易,这将触发我的调度查询。例如,如下所示
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"这很好,并触发了调度查询。其他桌子我也有类似的支票。
现在,我面临的问题是,一旦我的上一个调度查询运行良好,我需要触发另一个scheudle查询,这是一个挑战。我唯一能想到并能根据下面的内容过滤日志的事情
protoPayload.methodName="jobservice.jobcompleted"
protoPayload.serviceData.jobCompletedEvent.job.jobStatus.state="DONE"
protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.labels.data_source_id="scheduled_query"但是,上面提供了在我的项目中运行的所有调度查询的日志,在其中我正在寻找一个特定的查询。前面运行的调度查询有许多insert语句,很少有update语句,因此表id是零there.The,唯一的问题是每个调度查询日志中都有查询,您认为我需要在作为调度查询的一部分运行的多个查询中添加最后一个查询吗?例如,下面
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"但是,上面没有给出任何日志。请告知,因为我是卡住了,需要部署在prod。
发布于 2021-02-15 21:36:02
您可以使用调度查询发布通知功能来获取执行过程的更新。在云函数中,接收和处理PubSub消息并检查状态的值,当状态完成时,像第一次一样触发调度查询。

https://stackoverflow.com/questions/66212260
复制相似问题