Skip to main content

Toolkit para consultas e manipulação de dados no BigQuery com integração com DuckDB.

Project description

bigquery_duckdb_toolkit

bigquery_duckdb_toolkit é um pacote Python desenvolvido para facilitar o carregamento de dados do BigQuery e a execução de consultas SQL flexíveis no DuckDB. Ele permite carregar dados de qualquer tabela do BigQuery em um DataFrame pandas e realizar análises avançadas no DuckDB, sendo ideal para workflows de analytics engineering.

Instalação

Para instalar a partir do PyPI, execute:

pip install bigquery_duckdb_toolkit

Estrutura do Pacote

bigquery_duckdb_toolkit/
├── bigquery_duckdb_toolkit/
│   ├── __init__.py
│   ├── bigquery_client.py
│   ├── bigquery_to_pandas.py
│   └── interaction_service.py
├── setup.py
├── requirements.txt
└── README.md

Módulos Principais

  • BigQueryClient: Estabelece uma conexão com o BigQuery e executa consultas SQL.
  • BigQueryToPandas: Carrega dados do BigQuery em um DataFrame pandas e aplica filtros e conversões de tipo.
  • InteractionService: Carrega dados de qualquer tabela do BigQuery, registra-os no DuckDB e executa consultas SQL personalizadas.

Exemplo de Uso

Neste exemplo, usaremos o conjunto de dados público bigquery-public-data.samples.natality, que contém dados de natalidade nos Estados Unidos. Vamos carregar dados para um DataFrame pandas, registrá-los no DuckDB e realizar uma consulta personalizada.

Nota: Caso deseje filtrar por alguma chave primário ou estrangeira, utilizar o valor como string.

from bigquery_duckdb_toolkit.interaction_service import InteractionService

# Configurações
project_id = 'bigquery-public-data'
table_name = 'bigquery-public-data.samples.natality'

# Inicialize o serviço de interação
interaction_service = InteractionService(project_id)

# Carregue os dados do BigQuery com um filtro flexível e registre-os no DuckDB
filters = {"year": "2000", "state": "CA"}  # Exemplo de filtro para registros de 2000 na Califórnia
df = interaction_service.load_data_to_duckdb(table_name, filters, duckdb_table_name='natality')

# Execute uma consulta personalizada no DuckDB
# Exemplo: Contar o número de nascimentos por mês na Califórnia em 2000
query = """
  SELECT month, COUNT(*) AS births_count
  FROM natality
  GROUP BY month
  ORDER BY births_count DESC
"""
result_df = interaction_service.run_duckdb_query(query)

# Exibir os resultados
interaction_service.display_query_results(query)

API do Pacote

InteractionService

  • load_data_to_duckdb(table_name, filters=None, duckdb_table_name='temp_table'): Carrega dados de uma tabela BigQuery em um DataFrame pandas com filtros opcionais e registra-o como uma tabela no DuckDB.

    • Parâmetros:

      • table_name (str): Nome da tabela BigQuery no formato project.dataset.table.
      • filters (dict, opcional): Dicionário com filtros para aplicar à consulta. Exemplo: {"coluna": "valor"}.
      • duckdb_table_name (str, opcional): Nome para registrar a tabela no DuckDB (padrão: 'temp_table').
    • Retorno: pd.DataFrame com os dados filtrados.

  • run_duckdb_query(query): Executa uma consulta SQL no DuckDB e retorna os resultados em um DataFrame pandas.

    • Parâmetros:

      • query (str): Consulta SQL a ser executada.
    • Retorno: pd.DataFrame com os resultados da consulta.

  • display_query_results(query): Executa uma consulta SQL no DuckDB e exibe os resultados, útil para visualização em notebooks.

    • Parâmetros:
      • query (str): Consulta SQL a ser executada.

Contribuindo

Contribuições são bem-vindas! Abra issues e pull requests conforme necessário. Para contribuições maiores, entre em contato para discutir as mudanças propostas.

Licença

Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.

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

bigquery_duckdb_toolkit-1.0.3.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bigquery_duckdb_toolkit-1.0.3-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file bigquery_duckdb_toolkit-1.0.3.tar.gz.

File metadata

  • Download URL: bigquery_duckdb_toolkit-1.0.3.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for bigquery_duckdb_toolkit-1.0.3.tar.gz
Algorithm Hash digest
SHA256 f281445dce15f734748bc98db69b141472d21da92b4084a73268a90bdd50317b
MD5 b186244a1d65358c611bd2cf455617b0
BLAKE2b-256 73e58964c209729ab3cf37a24895c21bc351fba1d901928e84e7aa5dc0bdf883

See more details on using hashes here.

File details

Details for the file bigquery_duckdb_toolkit-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for bigquery_duckdb_toolkit-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 363a86ba558f45c30b44b05a735007e64cd0409b5f62c4ecd44416c3c4b2b698
MD5 0c9a201b84e479c98970d30b4cfe5724
BLAKE2b-256 f04b5d87649a52de18d39d4220851bd23e087ce730ddce8c2bc5ff92edcdc0e8

See more details on using hashes here.

Supported by

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