You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery参数化查询同一列时如何设置时间范围?

解决BigQuery参数化范围查询的重复参数错误

你遇到的错误是因为重复使用了同一个参数名received_datetime,BigQuery不允许参数列表中存在同名参数。要实现同一列的范围查询,只需给两个参数设置不同名称,再在查询语句中对应引用即可。

正确代码示例

from google.cloud import bigquery
from google.cloud.bigquery import ScalarQueryParameter
import datetime

# 修改查询语句,用不同名称区分两个时间参数
query_body = """SELECT * FROM `my_table` 
                WHERE received_datetime >= @start_date
                AND received_datetime <= @end_date
                LIMIT 100"""

# 定义两个不同名称的参数,分别对应起始和结束日期
query_parameters = [
    ScalarQueryParameter('start_date', 'DATE', datetime.datetime(2022, 11, 30, 0, 0)), 
    ScalarQueryParameter('end_date', 'DATE', datetime.datetime(2022, 12, 7, 0, 0))
]

job_config = bigquery.QueryJobConfig(query_parameters=query_parameters)
# 修正原代码中变量名不一致问题(定义了query_body却传入query_string)
query_job = client.query(query_body, job_config=job_config).result()

关键修改说明

  • 将查询语句中的两个@received_datetime分别改为@start_date和@end_date,明确区分起始和结束时间条件
  • 参数列表使用对应名称的参数,彻底避免同名参数冲突
  • 同步修正了原代码中query_body和query_string的变量名不一致问题

内容的提问来源于stack exchange,提问作者rob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:40:41