Cómo calcular la tasa de conversión por canal en Real-Time Analytics
Calcular la tasa de conversión por canal en Real-Time Analytics permite ver, en tiempo real, qué canales (p. ej.: email, ads, orgánico) convierten mejor y actuar rápidamente. Este tutorial explica el porqué y muestra cómo montar un pipeline sencillo de ingestión, agregación por ventana y cálculo de la tasa de conversión por canal.
Pre-requisitos
- Cuenta en un servicio de streaming orientado a eventos (p. ej.: Apache Kafka, Event Hubs)
- Sistema de procesamiento en tiempo real (p. ej.: Azure Stream Analytics, Apache Flink o Spark Structured Streaming)
- Almacenamiento para resultados (p. ej.: Azure SQL, Cosmos DB, o un tópico Kafka de salida)
- Datos de evento con campos: event_time, user_id, channel, event_type (p. ej.: page_view, purchase)
Paso 1: Entender la métrica y los eventos necesarios
Tasa de conversión por canal = (nº de usuarios con evento de conversión en un canal) / (nº de usuarios expuestos o visitantes en un canal) en una ventana temporal. Necesitamos distinguir eventos de exposición/visita (p. ej.: page_view) de eventos de conversión (p. ej.: purchase). Usar user_id para evitar duplicados por usuario.
Paso 2: Modelar la ventana temporal y la granularidad
Decida ventana tumbling o sliding (p. ej.: tumbling de 1 minuto para dashboards en tiempo real). La granularidad define la frecuencia de actualización y el coste. Para empezar, use ventana tumbling de 1 minuto por canal.
Paso 3: Ejemplo con Azure Stream Analytics (consulta SQL-like)
Ejemplo práctico usando Azure Stream Analytics para contar usuarios únicos por canal y calcular tasa de conversión en una ventana tumbling de 1 minuto. La fuente es un Event Hub con 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)
Paso 4: Unir resultados y calcular tasa de conversión
Si el motor no soporta joins de outputs, guarde ambas salidas en un almacenamiento y después haga una consulta que junte por window_end y channel. Ejemplo SQL para un destino como Azure SQL o un job que combine los 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;
Paso 5: Tratar duplicados y sesiones cortas (buenas prácticas)
Use COUNT(DISTINCT user_id) para evitar duplicados dentro de la ventana. Para evitar recuentos inflados por bots, filtre user_agents sospechosos o cree heurísticas (p. ej.: eventos con duración muy corta). Si la plataforma lo permite, aplique deduplicación por event_id antes de la agregación.
Paso 6: Visualizar en tiempo real y configurar alertas
Envíe la tabla resultante a un destino soportado por su dashboard (p. ej.: Power BI DirectQuery, o Cosmos DB + Azure Synapse). Configure alertas cuando conversion_rate caiga por debajo de un umbral o cuando visitors/conversions sufran cambios abruptos.
Verificar el resultado
Confirme que para cada ventana de 1 minuto existe una fila por channel con visitors, conversions y conversion_rate entre 0 y 1. Pruebe con eventos de ejemplo: enviar 10 page_view y 2 purchase en el mismo channel deberá mostrar visitors≥10 (dependiendo de user_id) y conversion_rate correspondiente. Revise logs del Stream Analytics para errores comunes (schema mismatch, timestamps fuera de orden).
Conclusión
Con una ventana tumbling y conteos distinct por user_id es sencillo obtener la tasa de conversión por channel en Real-Time Analytics. Próximos pasos: experimentar con ventanas deslizantes, normalizar por sesiones e integrar filtros anti-fraude. Consejo: empiece con ventanas mayores para validar la lógica antes de reducir a baja latencia.