Estado: o conector BigQuery é Disponível (maturidade
GA-candidato): dá para cadastrar e usar hoje, sem liberação caso a caso. A construção de consulta e o tratamento de partição são provados por teste. A extração real depende da service account da sua conta e do ambiente de nuvem do workspace estar configurado — sem ele a execução falha com mensagem. Custo faturado / latência = NÃO MEDIDO. Exemplos sintéticos.
Leia antes: Como os dados fluem · Catálogo de conectores.
O que é#
Conectar o BigQuery do SEU projeto como fonte de extração (modo pull). Aqui o Ingestia lê tabelas do seu BigQuery com a service account sua e as traz para a camada Bronze do seu workspace — igual ao pull de um banco relacional.
Não confunda com o BigQuery interno do Ingestia (o datalake destino, que roda com a nossa service account). Este tutorial é sobre usar o seu BigQuery como origem.
Para que serve#
Reaproveitar dados que já estão no seu data warehouse BigQuery (ex.: exportações de sistemas, tabelas de marketing) dentro do datalake do Ingestia.
Quando usar / quando não usar#
- Use quando: seus dados já estão em tabelas do BigQuery e você pode criar uma service account de leitura.
- Não use quando: os dados estão num banco relacional (use o conector do banco) ou em arquivos (use importar arquivo).
Plano e permissões#
- Núcleo do produto · verificação de acesso · chave de desligamento execução de ingestão.
- Papéis mínimos da service account do cliente:
roles/bigquery.dataViewerno projeto de dados;roles/bigquery.jobUserno projeto de billing (ou no de dados, se for único).
Pré-requisitos#
- Projeto de dados (Project ID) — onde os datasets/tabelas moram.
- Projeto de billing (opcional) — onde os jobs de consulta rodam e são cobrados; vazio = o próprio projeto de dados paga.
- Service account JSON com os papéis acima.
- Opcional: dataset específico e location (ex.:
US,southamerica-east1).
Passo a passo#
- No console, vá em ETL/ELT → Conexões e escolha BigQuery (categoria Bancos de dados).
- Projeto dos dados (Project ID) — ex.:
meu-projeto-example. - Cobrança das consultas (billing):
No mesmo projeto dos dados(padrão), ouEm outro projeto→ informe o Projeto de billing (ex.:meu-projeto-billing).
- Dataset — ex.:
vendas(opcional; vazio lista todos os acessíveis). - Location — ex.:
southamerica-east1(opcional; vazio = automático). - Chave da service account (JSON) — cole o JSON da service account do cliente (é cifrado; nunca é exibido de novo).
- Clique em Testar conexão e confirme que os datasets/tabelas aparecem.
- Selecione as tabelas e salve a fonte.
Exemplo (sintético)#
Projeto de dados: meu-projeto-example
Billing: Em outro projeto
Projeto de billing: meu-projeto-billing
Dataset: vendas
Location: southamerica-east1
Service account: { "type": "service_account", "project_id": "meu-projeto-example",... }Conceder acesso (exemplo com gcloud, valores fictícios):
# Leitura dos dados
gcloud projects add-iam-policy-binding meu-projeto-example \
--member="serviceAccount:ingestia-ro@meu-projeto-example.iam.gserviceaccount.com" \
--role="roles/bigquery.dataViewer"
# Rodar jobs de consulta (no projeto de billing)
gcloud projects add-iam-policy-binding meu-projeto-billing \
--member="serviceAccount:ingestia-ro@meu-projeto-example.iam.gserviceaccount.com" \
--role="roles/bigquery.jobUser"Resultado esperado#
- Testar conexão OK e a descoberta lista os datasets/tabelas acessíveis.
- Na carga, o Ingestia cria o job de consulta, faz um probe de 1 linha (descartada) para validar SQL/partição antes de enviar qualquer fragmento — assim um retry nunca duplica dado na landing.
- Tabelas com
require_partition_filtersão tratadas automaticamente: o Ingestia monta um predicado que cobre todas as linhas em vez de falhar.
Limites e custos#
- Extração fragmentada:
batchSizedefault 5.000 (100–50.000);maxRowsdefault 200.000 (até 5.000.000). - As consultas ao seu BigQuery são cobradas no seu projeto de billing (modelo on-demand do BigQuery). O Ingestia estima, mas o custo faturado real = NÃO MEDIDO.
- A carga para o Bronze do Ingestia é uma operação de carga cobrável no lado do Ingestia.
Segurança#
- Identificadores (projeto/dataset/tabela/coluna de watermark) são sanitizados antes de
entrar no SQL; o filtro incremental usa parâmetro nomeado (
@since), nunca concatenação. - A chave JSON da service account é cifrada e redigida em qualquer erro/log.
- Escopo por workspace: os dados vão para o Bronze do seu workspace.
Erros comuns#
| Sintoma | Causa provável | O que fazer |
|---|---|---|
Access Denied:... dataViewer | SA sem leitura nos dados | Conceda roles/bigquery.dataViewer no projeto de dados |
User does not have bigquery.jobs.create | SA sem jobUser no billing | Conceda roles/bigquery.jobUser no projeto de billing |
Cannot query... requires a filter | tabela com partição obrigatória | O Ingestia trata sozinho; se persistir, informe a coluna de partição |
Not found: Dataset | dataset/location errados | Confira o nome do dataset e a location |
| JSON inválido | chave colada incompleta | Cole o JSON inteiro da service account |
Diagnóstico#
- Use Testar conexão para separar permissão (dataViewer/jobUser) de configuração (dataset/location).
- Confirme que a service account tem acesso ao projeto de billing correto quando billing e dados são projetos diferentes.
Relacionados#
- Conectar PostgreSQL
- Criar pipeline incremental por watermark
- Custo, limites e segurança por workspace
Última revisão: 2026-09-08.