我正在尝试根据列表中的C列值,使用pandas.read_gbq
从Bigquery的表中选择A列和B列。但是,当我使用format
将列表插入查询字符串时,列表的内容被[]
方括号包围。这打断了我的查询。
我在查询字符串上使用replace
来手动删除方括号。
values_in_list = ['a', 'b', 'c']
query = """
SELECT
column_A,
column_B
FROM
my_table
WHERE
column_C IN ({})
""".format(values_in_list).replace('[', '').replace(']', '')
query_df = pandas.read_gbq(query, project_id='some-project', dialect='standard')
这可以完成工作。我想知道是否有比强行强制解决方案更优雅的解决方案。
答案 0 :(得分:1)
我不确定pandas.read_gbq
关键字arg中ArrayQueryParameters
是否支持query_config
。这是我的解决方法:
from google.cloud import bigquery
client = bigquery.Client()
values_in_list = ['a', 'b', 'c']
query = """
SELECT
column_A,
column_B
FROM
my_table
WHERE
column_C IN UNNEST(@col_c_vals)
"""
query_params = [bigquery.ArrayQueryParameter('col_c_vals', 'STRING', values_in_list)]
job_config = bigquery.QueryJobConfig()
job_config.query_parameters = query_params
query_df = client.query(query, job_config=job_config).to_dataframe()