Pular para conteúdo

bigquery

fonte

lê dados do google bigquery via service account, executando uma query sql ou apontando diretamente para uma tabela de um dataset.


quando usar

  • consumir um data warehouse analítico já existente no bigquery sem duplicar a modelagem
  • unificar dados do bigquery com outras fontes (bancos relacionais, apis, saas) em um único lakehouse governado
  • extrair incrementalmente tabelas de eventos/analytics grandes usando uma coluna de watermark

configuração

campo tipo obrigatório descrição
credential_id uuid sim credencial do tipo service account, criada em configurações → credenciais
project_id string não* gcp project id · pode vir da credencial
dataset string não* dataset padrão · pode vir da credencial
table string não* nome da tabela — usado apenas se query não for informado
query string não* sql (dialeto bigquery/standard sql) a executar · suporta {{variavel}}

informe query ou* table (+ dataset). se nenhum for informado, a extração falha.

extração incremental (watermark)

campo tipo descrição
watermark_column string coluna com timestamp/id crescente — habilita extração incremental por alto-water-mark
watermark_var string variável de pipeline injetada com o último valor visto (padrão: watermark)

não é cdc

assim como nos demais conectores sql, a extração incremental é por polling — não captura deletes ou updates que não avancem a coluna de watermark.


credencial (service account)

crie a credencial em configurações → credenciais com os seguintes campos:

campo descrição
project_id id do projeto gcp
credentials conteúdo json completo da chave da service account
dataset dataset padrão (opcional, pode ser sobrescrito na config do nó)

a service account precisa de permissão de leitura no bigquery (roles/bigquery.dataViewer + roles/bigquery.jobUser, no mínimo).


exemplos

query livre

{
  "credential_id": "uuid-da-credencial",
  "query": "SELECT * FROM `meu-projeto.vendas.pedidos` WHERE data_pedido >= '{{data_inicio}}' LIMIT 1000"
}

leitura direta de tabela (sem escrever sql)

{
  "credential_id": "uuid-da-credencial",
  "project_id": "meu-projeto",
  "dataset": "vendas",
  "table": "pedidos"
}

quando query não é informado, a plataforma monta automaticamente SELECT * FROM \project.dataset.table` LIMIT 10000`.

extração incremental

{
  "credential_id": "uuid-da-credencial",
  "query": "SELECT * FROM `meu-projeto.eventos.cliques` WHERE evento_ts > '{{ pipeline.watermark }}'",
  "watermark_column": "evento_ts",
  "watermark_var": "watermark"
}

variáveis de pipeline

qualquer trecho da query aceita {{variavel}}, substituído por interpolação segura antes da execução:

SELECT * FROM `meu-projeto.vendas.pedidos`
WHERE data_pedido BETWEEN '{{data_inicio}}' AND '{{data_fim}}'

custos de consulta

o bigquery cobra por volume de dados escaneado. use filtros de partição (ex: _PARTITIONDATE ou colunas de data particionadas) na query sempre que possível para reduzir custo e tempo de execução.