我希望通过GCP中的云函数创建一个到BigQuery的HTTPrequest,其中请求传递一个值,该值传递给查询,另一个值从联接表返回。SQL在BQ中工作,但当我将其应用于Cloud函数时,返回值时会出现问题。
这是我也在用的卷发器。
https://us-central1-something.cloudfunctions.net/something/something2?client_Id=823754783.2
提前谢谢。
from flask import escape
from google.cloud import bigquery
def cors_enabled_function(request):
if request.method == 'OPTIONS':
headers = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Max-Age': '3600'
}
return ('', 204, headers)
client = bigquery.Client()
def something2(request):
request_json = request.get_json(silent=True)
request_args = request_args
table = ['`audience-cookie.ecommerce.traffic` as traffic JOIN `audience-cookie.ecommerce.cardholder` as cardholder ON traffic.customerId = cardholder.customerId']
QUERY = ('SELECT '+cardholder+' from `'+table+'` WHERE client_Id='+client_Id)
try:
query_job = client.query(QUERY)
rows = query_job.result()
row_list = []
for row in rows:
row_list.append(str(row[cardholder]))
return("<p>"+"</p><p>".join(row(row_list) + "</p>"))
except e:
return(e)
我建议您打印查询。有几个错误
- 为什么在
table
var定义中使用[] - 在表中使用后引号,在将表插入查询时使用后引号。所以,在最后,你有一个双引号
- 代码中未定义client_Id