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

如何在命令行执行自定义BigQuery SQL查询?含Python SDK实现方式

在命令行及Python SDK中执行BigQuery查询

一、命令行执行(使用bq工具)

前提是已安装并配置好Google Cloud SDK(完成gcloud init身份验证),有两种执行方式:

1. 直接在命令行运行

将SQL语句用双引号包裹,执行以下命令:

bq query --use_legacy_sql=false "WITH
  SNP_info AS (
  SELECT
    CONCAT(CAST(rs_id AS string)) AS identifier
  FROM
  `386212.dataset_1.SNPs`)
SELECT
  *
FROM
  SNP_info
JOIN (
  SELECT
    CONCAT(CAST(rs_id AS string)) AS identifier,
*
 FROM
    `bigquery-public-data.open_targets_genetics.variants`) variants
ON
  SNP_info.identifier = variants.identifier"

注意:--use_legacy_sql=false必须添加,因为你的SQL使用的是标准SQL语法。

2. 通过SQL文件执行

把你的SQL语句保存为query.sql文件,然后执行:

bq query --use_legacy_sql=false < query.sql

二、Python SDK执行(使用google-cloud-bigquery库)

1. 准备工作

  • 安装依赖库:
pip install google-cloud-bigquery
  • 完成身份验证:可以通过设置环境变量GOOGLE_APPLICATION_CREDENTIALS指向服务账号密钥文件,或者运行gcloud auth application-default login完成本地身份验证。

2. 示例代码

from google.cloud import bigquery

# 初始化BigQuery客户端
client = bigquery.Client()

# 定义查询语句
query = """
WITH
  SNP_info AS (
  SELECT
    CONCAT(CAST(rs_id AS string)) AS identifier
  FROM
  `386212.dataset_1.SNPs`)
SELECT
  *
FROM
  SNP_info
JOIN (
  SELECT
    CONCAT(CAST(rs_id AS string)) AS identifier,
*
 FROM
    `bigquery-public-data.open_targets_genetics.variants`) variants
ON
  SNP_info.identifier = variants.identifier
"""

# 提交查询任务
query_job = client.query(query)

# 获取并处理结果(示例:遍历输出)
for row in query_job.result():
    print(f"identifier: {row.identifier}, 其他字段: {row}")

三、其他执行方式

  • BigQuery Web UI:直接在Google Cloud控制台的BigQuery界面中粘贴SQL语句,点击运行即可;
  • Cloud Functions/Cloud Run:将查询逻辑封装成云函数或服务,实现定时/触发式执行;
  • Terraform:通过基础设施即代码工具定义并执行BigQuery查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:27:36