(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como calcular a taxa de conversão por canal em Real-Time Analytics

João Barros 01 de November de 2026 4 min de leitura

Calcular a taxa de conversão por canal em Real-Time Analytics permite ver, em tempo real, que canais (ex.: email, ads, orgânico) convertem melhor e agir rapidamente. Este tutorial explica o porquê e mostra como montar um pipeline simples de ingestão, agregação por janela e cálculo da taxa de conversão por canal.

Pré-requisitos

  • Conta num serviço de streaming orientado a eventos (ex.: Apache Kafka, Event Hubs)
  • Sistema de processamento em tempo real (ex.: Azure Stream Analytics, Apache Flink ou Spark Structured Streaming)
  • Armazenamento para resultados (ex.: Azure SQL, Cosmos DB, ou um tópico Kafka de saída)
  • Dados de evento com campos: event_time, user_id, channel, event_type (ex.: page_view, purchase)

Passo 1: Entender a métrica e os eventos necessários

Taxa de conversão por canal = (nº de utilizadores com evento de conversão num canal) / (nº de utilizadores expostos ou visitantes num canal) numa janela temporal. Precisamos distinguir eventos de exposição/visita (ex.: page_view) de eventos de conversão (ex.: purchase). Usar user_id para evitar duplicados por utilizador.

Passo 2: Modelar a janela temporal e a granularidade

Decida janela tumbling ou sliding (ex.: tumbling de 1 minuto para dashboards em tempo real). A granularidade define frequência de atualização e custo. Para início, use janela tumbling de 1 minuto por canal.

Passo 3: Exemplo com Azure Stream Analytics (consulta SQL-like)

Exemplo prático usando Azure Stream Analytics para contar utilizadores únicos por canal e calcular taxa de conversão numa janela tumbling de 1 minuto. A fonte é um Event Hub com eventos JSON.

-- Contagem de visitantes únicos por canal (page_view)
SELECT
  System.Timestamp() AS window_end,
  channel,
  COUNT(DISTINCT user_id) AS visitors
INTO
  output_visitors
FROM
  input_events
WHERE
  event_type = 'page_view'
GROUP BY
  TumblingWindow(minute, 1), channel;

-- Contagem de conversões únicas por canal (purchase)
SELECT
  System.Timestamp() AS window_end,
  channel,
  COUNT(DISTINCT user_id) AS conversions
INTO
  output_conversions
FROM
  input_events
WHERE
  event_type = 'purchase'
GROUP BY
  TumblingWindow(minute, 1), channel;

-- Juntar resultados e calcular taxa de conversão (pode ser feito numa query separada ou em downstream)

Passo 4: Unir resultados e calcular taxa de conversão

Se o motor não suportar joins de outputs, grave ambas as saídas num armazenamento e depois faça uma query que junte por window_end e channel. Exemplo SQL para um destino como Azure SQL ou um job que combine os outputs:

SELECT
  v.window_end,
  v.channel,
  v.visitors,
  c.conversions,
  CASE WHEN v.visitors = 0 THEN 0 ELSE CAST(c.conversions AS FLOAT)/v.visitors END AS conversion_rate
FROM
  visitors_table v
LEFT JOIN
  conversions_table c
ON
  v.window_end = c.window_end AND v.channel = c.channel
ORDER BY v.window_end DESC;

Passo 5: Tratar duplicados e sessões curtas (boas práticas)

Use COUNT(DISTINCT user_id) para evitar duplicados dentro da janela. Para evitar contagens inflacionadas por bots, filtre user_agents suspeitos ou crie heurísticas (ex.: eventos com duração muito curta). Se a plataforma permitir, aplique deduplicação por event_id antes da agregação.

Passo 6: Visualizar em tempo real e configurar alertas

Envie a tabela resultante para um destino suportado pelo seu dashboard (ex.: Power BI DirectQuery, ou Cosmos DB + Azure Synapse). Configure alertas quando conversion_rate cair abaixo de um limiar ou quando visitors/conversions tiverem mudanças abruptas.

Verificar o resultado

Confirme que para cada janela de 1 minuto existe uma linha por channel com visitors, conversions e conversion_rate entre 0 e 1. Teste com eventos de exemplo: enviar 10 page_view e 2 purchase no mesmo channel deverá mostrar visitors≥10 (dependendo de user_id) e conversion_rate correspondente. Verifique logs do Stream Analytics para erros comuns (schema mismatch, timestamps fora de ordem).

Conclusão

Com uma janela tumbling e contagens distinct por user_id é simples obter a taxa de conversão por channel em Real-Time Analytics. Próximos passos: experimentar janelas deslizantes, normalizar por sessões e integrar filtros anti-fraude. Dica: comece com janelas maiores para validar lógica antes de reduzir para latência baixa.