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 在参数化查询中使用数组的主要内容,如果未能解决你的问题,请参考以下文章

IN()表达式中的nodejs bigquery参数化查询

如何安全地为 bigquery 节点插入转义用户输入?可以在 bigquery.insert 节点库上使用参数化查询吗?

将参数化 BigQuery 自定义查询连接到数据洞察

Google Bigquery - 运行参数化查询 - php

如何获取参数化 BigQuery 查询的控制台视图?

Google BigQuery 中的参数化查询错误