gpt4 book ai didi

python - 在 Python 中将数组参数传递给 SQL for BigQuery

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:22 26 4
gpt4 key购买 nike

我有一组 ID (~200k),我需要使用这些 ID 获取 BigQuery 表中的所有行。我试图在 python 中构建一个列表,并将其作为参数传递给使用 @ 的 SQL 查询,但我得到了 TypeError: 'ArrayQueryParameter' object is not iterable 错误。这是我试过的代码(非常类似于 https://cloud.google.com/bigquery/querying-data#running_parameterized_queries ):

id_list = ['id1', 'id2'] 
query = """
SELECT id
FROM `my-db`
WHERE id in UNNEST(@ids)
"""
query_job = client.run_async_query(
str(uuid.uuid4()),
query,
query_parameters=(
bigquery.ArrayQueryParameter('ids', 'ARRAY<STRING>', id_list)
)
)

最佳答案

这里的问题可能是您没有将元组传递给函数。

尝试在关闭括号之前添加一个逗号,如下所示:

id_list = ['id1', 'id2'] 
query = """
SELECT id
FROM `my-db`
WHERE id in UNNEST(@ids)
"""
query_job = client.run_async_query(
str(uuid.uuid4()),
query,
query_parameters=(
bigquery.ArrayQueryParameter('ids', 'STRING', id_list),
)
)

如果你这样做,在 Python 中:

t = (1)

然后运行:

type(t)

你会发现结果是int。但如果你这样做:

t = (1,)

然后它产生一个元组。

关于python - 在 Python 中将数组参数传递给 SQL for BigQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44577684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com