我正在使用BI工具查看Bigquery中的数据。数据分布在多个表中,因此在查询中有几个联接,以获得所需格式的数据。由于处理所有这些数据花费了一分钟时间,而且我希望有一种实时的体验,所以我创建了一个调度的查询来运行这个查询,它可以连接并将输出保存到一个表中。表中的数据每30分钟从ETL工具中输入(增量负载)。这将创建Bigquery来加载数据。
我有一个特定的表,在这个表的作业完成后,我想运行预定的查询。
我在调度查询中禁用了调度,因此它只能在API调用期间运行。我编写了一个python脚本,它将一个API请求发送到预定的查询。
在python中是否有任何方式实时监视特定Bigquery表的日志,因此当作业状态更改为特定表的“成功”时,我将向调度查询发送API请求以运行调度查询?
我看到了Stackdriver logging python code,似乎需要反复发出API请求才能模拟实时监视。对于特定的表,我似乎也不能过滤API请求中的结果,我从日志结果中为我编写了一些脚本。
有本土化的图书馆吗?
发布于 2020-02-04 07:17:48
找到了一个解决方案,但它使用了其他谷歌服务。
Cloud Logging有一个名为Sink的特性,在这里我们可以将日志指向Cloud Pub/Sub主题。
我们可以从Cloud Functions调用Cloud Pub/Sub。
Cloud Functions将使用python代码向Scheduled query发送API请求。
发布于 2020-01-30 14:45:32
如果您提到的过滤器是正确的,这应该是有效的:
from google.cloud import logging
from google.cloud.logging import DESCENDING
filter = 'resource.type="bigquery_resource" AND protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.tableId="tableID" AND log_name="projects/projectID/logs/cloudaudit.googleapis.com%2Fdata_access" AND proto_payload.method_name="jobservice.jobcompleted'
for element in logging_client.list_entries(order_by=DESCENDING, filter_=filter):
.... YOUR LOGIC HERE ...如果您需要一个实时解决方案(一些等待日志到达的代码),您应该自己实现。上面的代码将带所有与您的过滤器相关的日志,按日期降序排序。如果只想列出最后的日志,还应该更改筛选器,添加时间戳筛选器。
如果你有任何问题,请随便问我。我希望它能帮上忙
https://stackoverflow.com/questions/59980623
复制相似问题