Skip to main content

Dask + BigQuery integration

Project description

Dask-BigQuery

Tests Linting

Read/write data from/to Google BigQuery with Dask.

This package uses the BigQuery Storage API. Please refer to the data extraction pricing table for associated costs while using Dask-BigQuery.

Installation

dask-bigquery can be installed with pip:

pip install dask-bigquery

or with conda:

conda install -c conda-forge dask-bigquery

Google Cloud permissions

For reading from BiqQuery, you need the following roles to be enabled on the account:

  • BigQuery Read Session User
  • BigQuery Data Viewer, BigQuery Data Editor, or BigQuery Data Owner

Alternately, BigQuery Admin would give you full access to sessions and data.

For writing to BigQuery, the following roles are sufficient:

  • BigQuery Data Editor
  • Storage Object Creator

The minimal permissions to cover reading and writing:

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

Authentication

By default, dask-bigquery will use the Application Default Credentials. When running code locally, you can set this to use your user credentials by running

$ gcloud auth application-default login

User credentials require interactive login. For settings where this isn't possible, you'll need to create a service account. You can set the Application Default Credentials to the service account key using the GOOGLE_APPLICATION_CREDENTIALS environment variable:

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

For information on obtaining the credentials, use Google API documentation.

Example: read from BigQuery

dask-bigquery assumes that you are already authenticated.

import dask_bigquery

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

ddf.head()

Example: write to BigQuery

Write to BigQuery with default credentials

Assuming that client and workers are already provisioned with default credentials:

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",
)

Before loading data into BigQuery, to_gbq writes intermediary Parquet to a Google Storage bucket. Default bucket name is <your_project_id>-dask-bigquery. You can provide a diferent bucket name by setting the parameter: bucket="my-gs-bucket". After the job is done, the intermediary data is deleted.

Write to BigQuery with explicit (non-default) credentials

# 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,
)

Run tests locally

To run the tests locally you need to be authenticated and have a project created on that account. If you're using a service account, when created you need to select the role of "BigQuery Admin" in the section "Grant this service account access to project".

You can run the tests with

$ pytest dask_bigquery

if your default gcloud project is set, or manually specify the project ID with

DASK_BIGQUERY_PROJECT_ID pytest dask_bigquery

History

This project stems from the discussion in this Dask issue and this initial implementation developed by Brett Naul, Jacob Hayes, and Steven Soojin Kim.

License

BSD-3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dask-bigquery-2023.9.0.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

dask_bigquery-2023.9.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file dask-bigquery-2023.9.0.tar.gz.

File metadata

  • Download URL: dask-bigquery-2023.9.0.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for dask-bigquery-2023.9.0.tar.gz
Algorithm Hash digest
SHA256 d5129f93f2e96c8ea4a14f9bf1c9789b7f0d2d8e76eaddd4f26c3feb896435ca
MD5 2a335e1cf541bfdada36eb4cb53a9efe
BLAKE2b-256 2ddb5c6a14450f6b24002505861dd471229cf857dd2993399b9e6ffbb8305e79

See more details on using hashes here.

Provenance

File details

Details for the file dask_bigquery-2023.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dask_bigquery-2023.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c15b9f8e18476c3c6b764fbafa52a8f98778b1584be00df9204858bd09613ad0
MD5 0b11ac0475f3875710553f31517e8f1e
BLAKE2b-256 b66d18655439b9f6697854e5771f5165ba5ebff7f7aa7925a3f3426ae348e912

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page