BigQuery 在参数化查询中使用数组
Posted
技术标签:
【中文标题】BigQuery 在参数化查询中使用数组【英文标题】:BigQuery Using arrays in parameterized queries 【发布时间】:2018-08-07 18:37:59 【问题描述】:我需要使用数组运行参数化查询。
BigQuery API 的 Python 客户端库
id_pull = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
query = "SELECT column1 FROM `table1` WHERE id = @get_id;"
query_params = [
bigquery.ArrayQueryParameter(
'get_id', 'INT64', id_pull)
]
job_config = bigquery.QueryJobConfig()
job_config.query_parameters = query_params
query_job = client.query(query, location='US', job_config=job_config) #API request-starts query
results = query_job.result() # Waits for job to complete.
我按照文档中的说明进行操作,但是执行后出现此错误:
提高 self._exception google.api_core.exceptions.BadRequest: 400 否 运算符 = 参数类型的匹配签名:INT64, 大批。支持的签名:ANY = [1:67] 的 ANY
有人知道问题是什么以及如何解决吗?
【问题讨论】:
考虑对有帮助的答案进行投票 【参考方案1】:我认为问题出在您的 WHERE 子句中
代替
WHERE id = @get_id
应该是这样的
WHERE id IN UNNEST(@get_id)
【讨论】:
以上是关于BigQuery 在参数化查询中使用数组的主要内容,如果未能解决你的问题,请参考以下文章
如何安全地为 bigquery 节点插入转义用户输入?可以在 bigquery.insert 节点库上使用参数化查询吗?