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.