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

Python中如何通过Polars API直接读写BigQuery表?

Polars 与 BigQuery 原生集成方案

从 BigQuery 读取数据

Polars 支持两种原生读取方式,无需转换为 Pandas:

方式1:通过 SQLAlchemy 连接读取

依赖 google-cloud-bigquery 和 sqlalchemy-bigquery 库实现数据库连接:

pip install polars google-cloud-bigquery sqlalchemy-bigquery

代码示例:

import polars as pl
from sqlalchemy import create_engine

# 初始化 BigQuery SQLAlchemy 引擎
engine = create_engine(
    "bigquery://<你的GCP项目ID>",
    credentials_path="<你的服务账号密钥路径>"
)

# 直接执行查询并返回 Polars DataFrame
df = pl.read_database(
    query="SELECT * FROM `项目ID.数据集ID.表名` LIMIT 1000",
    connection=engine
)

方式2:基于 Arrow 格式读取(性能更优)

利用 BigQuery 的 Arrow 导出能力,直接将查询结果转为 Polars DataFrame:

from google.cloud import bigquery
import polars as pl

client = bigquery.Client(project="<你的GCP项目ID>")
query_job = client.query("SELECT * FROM `项目ID.数据集ID.表名` LIMIT 1000")

# 直接将 Arrow 结果转为 Polars DataFrame
df = pl.from_arrow(query_job.to_arrow())

将 Polars DataFrame 写入 BigQuery

同样提供两种原生写入方案:

方式1:使用 write_database() 方法

import polars as pl
from sqlalchemy import create_engine

engine = create_engine(
    "bigquery://<你的GCP项目ID>",
    credentials_path="<你的服务账号密钥路径>"
)

# 写入数据,支持 replace/append/fail 三种写入策略
df.write_database(
    table_name="<数据集ID.目标表名>",
    connection=engine,
    if_exists="replace"
)

方式2:基于 Arrow 格式写入(大场景推荐)

借助 Polars 与 Arrow 的原生兼容性,直接写入避免额外转换:

from google.cloud import bigquery
import polars as pl

client = bigquery.Client(project="<你的GCP项目ID>")
job_config = bigquery.LoadJobConfig(
    write_disposition="WRITE_TRUNCATE"  # 可选:WRITE_TRUNCATE/WRITE_APPEND/WRITE_EMPTY
)

# Polars DataFrame 转 Arrow Table
arrow_table = df.to_arrow()

# 加载到 BigQuery
load_job = client.load_table_from_arrow(
    arrow_table,
    "<项目ID.数据集ID.目标表名>",
    job_config=job_config
)
load_job.result()  # 等待写入完成

关键注意事项

  • 确保已完成 GCP 身份认证(服务账号密钥或环境变量认证均可)
  • 超大规模数据集优先选择 Arrow 交互方式,性能远高于 Pandas 中转方案
  • 注意 sqlalchemy-bigquery 与 SQLAlchemy、Polars 的版本兼容性

内容的提问来源于stack exchange,提问作者Emiliano Moreno M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:42:18