开发者社区> 问答> 正文

GCP发布/订阅-如何从BQ预定查询中检索状态

我有一个Big Query预定查询,可通过pub / sub触发云功能。

我希望函数从发布/订阅消息中读取“状态”值,以便可以查看它是否成功完成。

以下内容将始终触发else语句。如果删除了if语句,它将返回KeyError。

import base64

def hello_pubsub(event, context):
    data = base64.b64decode(event['data']).decode('utf-8')

    if 'state' in data:
        state = data['state']
        print("returned state: " + state)
    else:
        print ("No state attribute found")

这是函数应接收的pubsub消息:

{
"data":
{"dataSourceId": "scheduled_query", 
"destinationDatasetId": "xxxxxxxxxx", 
"emailPreferences": { }, 
"endTime": "2020-03-12T20:40:13.627285Z", 
"errorStatus": { },
"name": "xxxxxxxxxx", "notificationPubsubTopic": "projects/xxxxxxxxxx/topics/xxxxxxxxxx", 
"params": { "destination_table_name_template": "xxxxxxxxxx", "query": "xxxxxxxxxx", "write_disposition": "WRITE_TRUNCATE" }, 
"runTime": "2020-03-05T10:00:00Z", 
"scheduleTime": "2020-03-12T20:37:13.17166Z", 
"startTime": "2020-03-12T20:37:13.328479Z", 
"state": "SUCCEEDED", 
"updateTime": "2020-03-12T20:40:13.627307Z", 
"userId": "xxxxxxxxxx"
}
}

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 10:08:52 516 0
1 条回答
写回答
取消 提交回答
  • 我已经知道了。

    data = base64.b64decode(event['data']).decode('utf-8')
    

    这将返回json格式的字符串,而不是字典对象。您需要通过以下方式将其转换为dict:

    data_dict = json.loads(data)
    

    为了能够像字典一样访问它。

    回答来源:stackoverflow

    2020-03-24 10:09:00
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
LTS(原BDS)产品介绍 立即下载
《Pulsar 2.8.0 功能特性概述及规划》 立即下载
FLINK在大规模实时无效广告流量检测中的应用 立即下载