thn*_*thn 1 python sql google-bigquery
我有一组 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)
)
)
Run Code Online (Sandbox Code Playgroud)
可能这里的问题是您没有将元组传递给函数。
尝试在关闭括号之前添加一个逗号,如下所示:
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),
)
)
Run Code Online (Sandbox Code Playgroud)
在 Python 中,如果你这样做:
t = (1)
Run Code Online (Sandbox Code Playgroud)
然后运行:
type(t)
Run Code Online (Sandbox Code Playgroud)
你会发现结果是int
。但如果你这样做:
t = (1,)
Run Code Online (Sandbox Code Playgroud)
然后它产生一个元组。
归档时间: |
|
查看次数: |
4136 次 |
最近记录: |