BigQuery表中不支持触发器
一种方法是创建Pub/Sub接收器,并在云函数中接收此事件
假设此数据已更新/插入{ name: 'abc', id: '09nv' }
表中
我想在表更新后立即将这些数据发送到云功能。
我能做的最好的事情就是在Pub/Sub消息中发送这个消息。
Pub/Sub message format:
{
"data": string, // will have to stringify the json row(s) as required format is string
"attributes": {
string: string,
...
},
"messageId": string,
"publishTime": string,
"orderingKey": string
}
然而,我不知道如何在Pub/Sub消息(data(中发送更新后的数据。
如果有Pub/Sub方法之外的其他方法,也可以尝试。
使用Google Pub/Sub,您可以将消息发布到相关主题。消息需要按照模式和指定的格式进行编码。您可以将此消息发送到Cloud Function,并通过Pub/Sub主题发布的消息进行触发。
您需要将消息发布到某个主题。
你可以看到这个例子。此外,您可以在该链接中看到更多文档。
def publish(request):
request_json = request.get_json(silent=True)
topic_name = request_json.get("topic")
message = request_json.get("message")
if not topic_name or not message:
return ('Missing "topic" and/or "message" parameter.', 400)
print(f'Publishing message to topic {topic_name}')
然后,从Pub/Sub主题触发的Cloud功能将向PubSubMessage发送事件。
您需要对云函数进行编码。
def hello_pubsub(event, context):
import base64
print("""This Function was triggered by messageId {} published at {} to {}
""".format(context.event_id, context.timestamp, context.resource["name"]))
if 'data' in event:
name = base64.b64decode(event['data']).decode('utf-8')
else:
name = 'World'
print('Hello {}!'.format(name))
您可以尝试的另一个选项是使用MySQL语言使用CloudSQL。使用Cloud SQL,您可以使用服务器级别的触发器。
Google Cloud SQL是一项易于使用的服务,可提供完全管理的服务云中的SQL数据库。Google Cloud SQL提供MySQL或PostgreSQL数据库。