Google bigquery 在两个不同的日志在“jobStatus”中处于“DONE”状态后,如何向云发布/订阅发送发布消息请求?

Google bigquery 在两个不同的日志在“jobStatus”中处于“DONE”状态后,如何向云发布/订阅发送发布消息请求?,google-bigquery,google-cloud-functions,google-cloud-pubsub,stackdriver,Google Bigquery,Google Cloud Functions,Google Cloud Pubsub,Stackdriver,我已经设置了一个ETL工具,它将数据从Oracle发送到Bigquery,并持续发送增量数据。当数据进入时,它会创建一个作业,并记录在Stackdriver日志中 当新的增量数据出现时,一些旧数据变得不必要,我使用查询将其删除 我设置了一个日志接收器,条件是当新数据进入时,将其作为消息发送到Cloud pub/sub,并使用Cloud pub/sub触发云函数。云函数对调度查询进行API调用,调度查询运行查询以删除旧数据 我有大约20个表原始数据表,使用相同的设置从相应的表中删除旧数据 我有5个

我已经设置了一个ETL工具,它将数据从Oracle发送到Bigquery,并持续发送增量数据。当数据进入时,它会创建一个作业,并记录在Stackdriver日志中

当新的增量数据出现时,一些旧数据变得不必要,我使用查询将其删除

我设置了一个日志接收器,条件是当新数据进入时,将其作为消息发送到Cloud pub/sub,并使用Cloud pub/sub触发云函数。云函数对调度查询进行API调用,调度查询运行查询以删除旧数据

我有大约20个表原始数据表,使用相同的设置从相应的表中删除旧数据

我有5个表BusinessIntelligence表,它使用了20个表,其中包含一些连接和where条件

此查询也以基于时间的模式在计划查询中运行

我希望在两个或多个原始数据表的计划查询成功运行后,手动运行Business Intelligence表的计划查询

我可以使用Stackdriver日志记录中的以下高级过滤器查看每个计划查询的日志:

resource.type="bigquery_resource" AND
protoPayload.requestMetadata.callerSuppliedUserAgent="BigQuery Data Transfer Service" AND
protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.query.destinationTable.tableId="aes_mapbin" AND
protoPayload.serviceData.jobInsertResponse.resource.jobStatus.state="DONE"
我想做的是:为上述过滤条件的两个或多个计划查询创建一个日志接收器,如果两个计划查询的jobStatus为DONE,则向Cloud pub/sub发送一条消息,该消息将触发云函数,该函数对创建商业智能表的计划查询进行API调用

有可能吗?或者我是否在CloudFunctions python脚本中创建一个逻辑来将状态存储在Cloud bucket或Bigquery本身中,然后在出现消息时再次重置存储在中的值

我当前用于对计划查询进行API调用的python脚本:

import base64
from google.cloud import bigquery_datatransfer
from google.protobuf.timestamp_pb2 import Timestamp
from google.protobuf.json_format import MessageToJson

client = bigquery_datatransfer.DataTransferServiceClient()
project = 'projectID' 
parent = client.project_path(project)
start_time = Timestamp()   
start_time.GetCurrentTime()

def hello_pubsub(event, context):
    """Triggered from a message on a Cloud Pub/Sub topic.
    Args:
         event (dict): Event payload.
         context (google.cloud.functions.Context): Metadata for the event.
    """
    response = client.start_manual_transfer_runs(
        'Transfer configuration resource name',
        requested_run_time = start_time
        )

可以使用proto_有效负载筛选日志中已完成的作业。方法_name=jobservice.jobscompleted。您可以创建一个子主题。然后您可以将一些过滤后的日志消息导出到PubSub,这样PubSub将成为您的接收器。因此,您可以使用它作为云函数的触发器,在创建它时,您可以选择PubSub作为触发器并选择主题。继续我之前的评论,在这两个链接中,您可以阅读有关此过程和主题的更多信息。这就是你要找的吗?@AlexandreMoraes SAO没有通知你的评论,很抱歉回复太晚。我已经使用cloud pub/sub实现了接收并触发了来自云函数的预定查询。我的意图是仅当两个云发布/sub主题收到消息时才触发云函数。