1. Por Que a Conexão GA4 + BigQuery É Obrigatória
No antigo Google Analytics Universal (GA3), a exportação de dados brutos para o BigQuery era um privilégio reservado exclusivamente a clientes corporativos que pagavam mais de US$ 150.000,00 anuais pelo Google Analytics 360.
Com o advento do Google Analytics 4 (GA4), o Google democratizou essa funcionalidade, liberando a conexão nativa com o Google BigQuery gratuitamente para todas as contas.
Apesar disso, menos de 15% das empresas utilizam esse recurso. Ficam presas às limitações severas da interface gráfica do GA4:
- Retenção Estrita de 14 Meses: Na interface gratuita do GA4, eventos de exploração não podem ser analisados após 14 meses. No BigQuery, os dados são seus para sempre.
- Amostragem (Data Sampling): Relatórios complexos na web sofrem amostragem agressiva quando ultrapassam 10 milhões de eventos. No BigQuery, 100% das consultas analisam a integridade total dos dados brutos.
- Controle de Thresholding (Limiar de Privacidade): Na interface, o Google oculta linhas de relatórios com poucos usuários para evitar reidentificação. No BigQuery, você tem acesso ao dado cru de cada transação associado ao seu
transaction_id.
2. Passo a Passo de Configuração no Google Cloud Platform
O processo de vinculação exige menos de 10 minutos de trabalho técnico:
- Acesse o console do Google Cloud Platform (console.cloud.google.com) e crie um novo projeto dedicado (ex:
analytics-ecommerce-producao). - Vincule uma conta de faturamento (Billing Account) ao projeto para permitir exportação em streaming e consultas acima da cota gratuita.
- Abra o painel do Google Analytics 4, vá em Administrador > Vinculações de Produtos > Vinculações do BigQuery.
- Clique em "Vincular", selecione o projeto do GCP recém-criado e escolha a região do servidor (recomenda-se
us-east1ousouthamerica-east1em São Paulo para menor latência). - Marque a opção de Exportação Diária (Daily) e a Exportação Contínua (Streaming).
- Clique em "Confirmar". Dentro de 24 horas, o conjunto de dados (dataset) com o padrão
analytics_XXXXXXXXXserá populado automaticamente no seu BigQuery.
3. Infográfico Vetorial: Pipeline de Dados do GA4 ao BigQuery
O diagrama a seguir demonstra a esteira de dados entre a loja e o data warehouse:
4. Matriz Comparativa: Exportação Diária vs Streaming em Tempo Real
Entenda as diferenças entre as duas tabelas geradas no BigQuery:
| Parâmetro | Exportação Diária (Batch) | Exportação em Streaming (Contínua) |
|---|---|---|
| Nome da Tabela | events_YYYYMMDD |
events_intraday_YYYYMMDD |
| Disponibilidade dos Dados | Disponível na madrugada seguinte (D+1) | Em poucos segundos após o evento |
| Custo de Ingestão no GCP | 100% Gratuito | US$ 0,05 por gigabyte ingerido |
| Caso de Uso Principal | Relatórios financeiros consolidados e auditorias | Dashboards de tempo real e alertas de indisponibilidade |
5. O Schema Aninhado do GA4: Dominando o Operador UNNEST()
O schema do GA4 não possui uma coluna tradicional para cada parâmetro. Em vez disso, ele armazena os parâmetros em uma estrutura repetida chamada event_params, que contém as chaves key, value.string_value, value.int_value e value.double_value.
Para extrair o valor de uma dimensão personalizada (ex: page_location), a sintaxe padrão requer:
-- Extração de parâmetro de evento no BigQuery
SELECT
event_date,
event_name,
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location') AS url_pagina
FROM `seu_projeto.analytics_123456789.events_20261014`
LIMIT 10;
6. Consultas SQL Prontas para E-commerce e LTV
Abaixo disponibilizamos duas consultas SQL de alta utilidade prática prontas para execução:
-- 1. Faturamento Líquido por Canal de Primeiro Toque
SELECT
traffic_source.name AS campanha_origem,
traffic_source.medium AS meio_origem,
COUNT(DISTINCT ecommerce.transaction_id) AS total_pedidos,
ROUND(SUM(ecommerce.purchase_revenue), 2) AS receita_total_reais,
ROUND(AVG(ecommerce.purchase_revenue), 2) AS ticket_medio
FROM `seu_projeto.analytics_123456789.events_*`
WHERE event_name = 'purchase'
AND _TABLE_SUFFIX BETWEEN '20260901' AND '20260930'
GROUP BY 1, 2
ORDER BY receita_total_reais DESC;
-- 2. Análise de Cohort: Recompra de Clientes em 90 Dias
WITH primeira_compra AS (
SELECT
user_pseudo_id,
MIN(PARSE_DATE('%Y%m%d', event_date)) AS data_primeira_compra
FROM `seu_projeto.analytics_123456789.events_*`
WHERE event_name = 'purchase'
GROUP BY 1
),
compras_subsequentes AS (
SELECT
e.user_pseudo_id,
PARSE_DATE('%Y%m%d', e.event_date) AS data_compra,
p.data_primeira_compra,
DATE_DIFF(PARSE_DATE('%Y%m%d', e.event_date), p.data_primeira_compra, DAY) AS dias_desde_primeira
FROM `seu_projeto.analytics_123456789.events_*` e
JOIN primeira_compra p ON e.user_pseudo_id = p.user_pseudo_id
WHERE e.event_name = 'purchase'
)
SELECT
CASE
WHEN dias_desde_primeira = 0 THEN '0. Primeira Compra'
WHEN dias_desde_primeira BETWEEN 1 AND 30 THEN '1. Recompra em 30 dias'
WHEN dias_desde_primeira BETWEEN 31 AND 60 THEN '2. Recompra em 60 dias'
ELSE '3. Recompra 60+ dias'
END AS faixa_recompra,
COUNT(DISTINCT user_pseudo_id) AS total_clientes
FROM compras_subsequentes
GROUP BY 1
ORDER BY 1;
7. Governança de Custos: Como Evitar Gastos Desnecessários no GCP
O BigQuery cobra por volume de dados processados em cada consulta (US$ 6,25 por Terabyte). Para manter sua fatura sempre dentro da cota gratuita de 1 TB:
- Sempre use filtro de partição
_TABLE_SUFFIX: Jamais façaFROM events_*sem limitar o intervalo de datas no WHERE. Consultar 3 anos de dados consome dezenas de gigabytes a cada clique. - Evite
SELECT *: Projete apenas as colunas estritamente necessárias para a sua análise. - Crie Tabelas Agregadas Diárias: Utilize Scheduled Queries (consultas agendadas) para processar os dados da véspera e salvar tabelas resumidas menores para conexão com o Looker Studio.
8. Checklist de Ativação e Homologação
Diretrizes para auditoria de dados:
- O projeto do GCP possui Billing Account configurada com alertas de orçamento ativados?
- A vinculação com o GA4 inclui a exportação diária e streaming?
- O dataset já está recebendo as tabelas
events_YYYYMMDDdiariamente? - Os parâmetros customizados do e-commerce estão sendo desaninhados corretamente via SQL?
Perguntas Frequentes sobre como conectar ga4 a bigquery
A integração do GA4 com o BigQuery é paga?
A conexão e a exportação de dados entre o GA4 e o BigQuery são 100% GRATUITAS por parte do Google. No Google Cloud, você paga apenas pelo armazenamento e pelo processamento das consultas SQL que excederem a generosa cota gratuita mensal do GCP (10 GB de armazenamento e 1 TB de consultas SQL gratuitas por mês). Para a maioria dos e-commerces médios, o custo mensal é literalmente de centavos ou zero.
O que acontece se eu não ativar o BigQuery agora?
O BigQuery NÃO coleta dados retroativos. Ele começa a armazenar os eventos a partir do dia em que a vinculação é realizada. Se você esperar seis meses para ativar, terá perdido seis meses de dados brutos granulares para sempre.
O que significa 'desaninhar' (UNNEST) no SQL do GA4?
O GA4 armazena parâmetros de eventos e itens de compra em arrays aninhados (Record/Struct) dentro de cada linha de evento para economizar espaço. Em SQL padrão, é necessário utilizar o operador CROSS JOIN UNNEST(event_params) para 'abrir' esse array e transformar o parâmetro em uma coluna comum de tabela.
Qual a diferença entre a tabela events_YYYYMMDD e events_intraday_YYYYMMDD?
A tabela 'intraday' contém os eventos do dia corrente recebidos em streaming quase em tempo real. Durante a madrugada seguinte, o Google processa, higieniza e consolida esses dados na tabela definitiva 'events_YYYYMMDD', descartando a tabela intraday temporária.