gpt4 book ai didi

python - pandas-gbq 目前是否支持参数化查询?

转载 作者:行者123 更新时间:2023-12-01 21:51:28 26 4
gpt4 key购买 nike

我需要使用 Pandas/pandas-gbq 在 Python 中创建一个简单的 ETL 管道,将给定日期范围内的每一天从 BigQuery 读取到 Pandas 数据帧中,并根据查询结果创建单独的每日表(写回 BigQuery)。

虽然可能有更好、更有效的方法(注意:我不是软件工程师),但我目前正在研究 Parameterized Queries在 BigQuery 中参数化日期列并在 Python 中的 for 循环中对其进行迭代。

有谁知道 pandas-gbq 目前是否支持参数化查询?提前致谢。

最佳答案

是的,确实如此。不过,我建议您切换到官方的 Google BigQuery Client Library,它也支持参数。

BigQuery 客户端库: https://cloud.google.com/bigquery/docs/reference/libraries#client-libraries-install-python

使用 Pandas GBQ 设置参数

您可以使用 configuration 参数在 Pandas GBQ 查询中设置参数,引用 Pandas GBQ docs :

configuration : dict, optional Query config parameters for job processing. For example:

configuration = {‘query’: {‘useQueryCache’: False}}

这是来自该链接的完整代码示例,它描述了如何在 Pandas GBQ 中参数化查询:

import pandas

sql = """
SELECT name
FROM `bigquery-public-data.usa_names.usa_1910_current`
WHERE state = @state
"""
query_config = {
'query': {
'parameterMode': 'NAMED',
'queryParameters': [
{
'name': 'state',
'parameterType': {'type': 'STRING'}
},
]
}
}
df = pandas.read_gbq(sql, configuration=query_config)

使用 BigQuery 客户端库设置参数

这是一篇关于从 Pandas-GBQ 迁移到 BigQuery 客户端库的优秀文章: https://cloud.google.com/bigquery/docs/pandas-gbq-migration

下面是一些示例 Python 代码,其中我使用官方 BQ 客户端库在查询中使用参数:

table_name = "my_table"
job_config = bigquery.QueryJobConfig()
# Set the destination table
table_ref = client.dataset(dataset_id).table(table_name)
job_config.destination = table_ref
job_config.write_disposition = 'WRITE_APPEND'
sql = """
SELECT * FROM dataset.table WHERE visit_date = date
"""
query_params = [bigquery.ScalarQueryParameter('date', 'DATE', date)]
job_config.query_parameters = query_params

# Start the query, passing in the extra configuration.
query_job = client.query(
sql,
location='EU',
job_config=job_config) # API request - starts the query

query_job.result() # Waits for the query to finish

关于python - pandas-gbq 目前是否支持参数化查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59373681/

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