跳转到主要内容

Dask + BigQuery集成

项目描述

Dask-BigQuery

Tests Linting

使用Dask读写Google BigQuery中的数据。

此包使用BigQuery存储API。请参阅数据提取定价表了解使用Dask-BigQuery的相关费用。

安装

dask-bigquery可以使用pip安装

pip install dask-bigquery

或使用conda

conda install -c conda-forge dask-bigquery

Google Cloud权限

对于从BigQuery读取,需要在账户中启用以下角色

  • BigQuery Read Session User
  • BigQuery Data ViewerBigQuery Data EditorBigQuery Data Owner

或者,BigQuery Admin将为您提供对会话和数据的完全访问权限。

对于写入BigQuery,以下角色就足够了

  • BigQuery Data Editor
  • Storage Object Creator

涵盖读取和写入的最小权限

  • BigQuery Data Editor
  • BigQuery Read Session User
  • Storage Object Creator

身份验证

默认情况下,dask-bigquery将使用应用默认凭证。在本地运行代码时,您可以通过以下命令将其设置为使用您的用户凭证:

$ gcloud auth application-default login

用户凭证需要交互式登录。对于无法进行交互式登录的设置,您需要创建一个服务帐户。您可以使用GOOGLE_APPLICATION_CREDENTIALS环境变量将应用默认凭证设置为服务帐户密钥

$ export GOOGLE_APPLICATION_CREDENTIALS=/home/<username>/google.json

有关获取凭证的信息,请参阅Google API 文档

示例:从 BigQuery 读取

dask-bigquery假定您已经进行了认证。

import dask_bigquery

ddf = dask_bigquery.read_gbq(
    project_id="your_project_id",
    dataset_id="your_dataset",
    table_id="your_table",
)

ddf.head()

示例:写入 BigQuery

使用默认凭证写入 BigQuery

假设客户端和工作者已经通过默认凭证进行了配置

import dask
import dask_bigquery

ddf = dask.datasets.timeseries(freq="1min")

res = dask_bigquery.to_gbq(
    ddf,
    project_id="my_project_id",
    dataset_id="my_dataset_id",
    table_id="my_table_name",
)

在将数据加载到 BigQuery 之前,to_gbq会将中间 Parquet 写入 Google Storage 存储桶。默认存储桶名称为<your_project_id>-dask-bigquery。您可以通过设置参数来提供不同的存储桶名称:bucket="my-gs-bucket"。作业完成后,中间数据将被删除。

使用显式(非默认)凭证写入 BigQuery

# service account credentials
creds_dict = {"type": ..., "project_id": ..., "private_key_id": ...}

res = to_gbq(
    ddf,
    project_id="my_project_id",
    dataset_id="my_dataset_id",
    table_id="my_table_name",
    credentials=credentials,
)

在本地运行测试

要在本地运行测试,您需要认证并且在该帐户上创建一个项目。如果您使用的是服务帐户,则在创建时需要选择“BigQuery Admin”角色。

您可以使用以下命令运行测试:

$ pytest dask_bigquery

如果您已设置默认的gcloud项目,或者可以使用以下命令手动指定项目 ID:

DASK_BIGQUERY_PROJECT_ID pytest dask_bigquery

历史

该项目源于这个 Dask 问题以及由Brett NaulJacob HayesSteven Soojin Kim开发的初始实现中的讨论。

许可

BSD-3

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

dask_bigquery-2024.7.0.tar.gz (12.5 kB 查看哈希值)

上传时间

构建分发

dask_bigquery-2024.7.0-py3-none-any.whl (11.7 kB 查看哈希值)

上传时间 Python 3

支持者