我希望有人能帮我解决这个问题。
我有一个创建的谷歌云功能,这是http触发和一个webhook设置在customer.io
我需要捕获客户发送的数据。这将触发Google cloud函数并在cloud函数中运行python脚本设置。我是编写python脚本及其库的新手。最后的目标是将webhook数据写入bigquery表。
现在,我能够看到触发器正在工作,因为我正在使用功能日志看到应用程序发送的使用打印的数据。我能够检查数据的模式,以及从日志textpayload。
这是我想要加载到bigquery表上的textpayload的示例数据:
{
"data":{
"action_id":42,
"campaign_id":23,
"customer_id":"user-123",
"delivery_id":"RAECAAFwnUSneIa0ZXkmq8EdkAM==-",
"identifiers":{
"id":"user-123"
},
"recipient":"test@example.com",
"subject":"Thanks for signing up"
},
"event_id":"01E2EMRMM6TZ12TF9WGZN0WJaa",
"metric":"sent",
"object_type":"email",
"timestamp":1669337039
}
,这是我在google-cloud函数上创建的示例Python代码:
import os
def webhook(request):
request_json = request.get_json()
if request.method == 'POST':
print(request_json)
return 'success'
else:
return 'failed'
我只尝试从webhook打印数据,我期望的是有一个Python代码,将这个textpayload数据写入bigquery表。
{
"data":{
"action_id":42,
"campaign_id":23,
"customer_id":"user-123",
"delivery_id":"RAECAAFwnUSneIa0ZXkmq8EdkAM==-",
"identifiers":{
"id":"user-123"
},
"recipient":"test@example.com",
"subject":"Thanks for signing up"
},
"event_id":"01E2EMRMM6TZ12TF9WGZN0WJaa",
"metric":"sent",
"object_type":"email",
"timestamp":1669337039
}
所以,你有一个云函数,每当webhook向它发送一些数据时,它就会执行一些代码。
这个云函数现在需要的是BigQuery python客户端库。下面是如何使用它的一个例子(来源):
from google.cloud import bigquery
client = bigquery.Client()
dataset_id = ...
table_name = ...
data = ...
dataset_ref = client.dataset(dataset_id)
table_ref = dataset_ref.table(table_name)
table = client.get_table(table_ref)
result = client.insert_rows(table, data)
所以你可以在你的云函数中加入这样的东西,以便将你的数据发送到目标BigQuery表。