Eliminación de eventos estructurados duplicados con SQL
La deduplicación es un problema de definición empresarial antes de ser un problema SQL. Dos eventos que parecen similares pueden representar una entrega duplicada, un reintento intencional o dos acciones válidas del usuario. Comience con un identificador generado por el origen para el evento lógico o la entrega. No infiera la identidad a partir de una marca de tiempo y una cadena de mensaje a menos que el contrato del productor garantice que la combinación es única.
Seleccione una fila para cada identificador estable
WITH ranked AS (
SELECT
event_id,
account_id,
event_name,
timestamp_utc,
received_at,
ROW_NUMBER() OVER (
PARTITION BY event_id
ORDER BY received_at ASC
) AS delivery_rank
FROM product_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
)
SELECT
account_id,
event_name,
timestamp_utc
FROM ranked
WHERE delivery_rank = 1;
Esta versión conserva la primera copia recibida. En cambio, una tabla de sincronización de estado podría conservar el registro más reciente. Escriba la opción al lado de la consulta, porque cambiar el orden cambia el significado del resultado.
Mida los duplicados antes de eliminarlos
Cuente filas sin procesar, identificadores distintos e identificadores con más de una entrega. Desglose el resultado por productor, versión de SDK, versión o ruta de entrega cuando esas dimensiones puedan identificar la fuente. Un CTE de deduplicación puede corregir un panel posterior y al mismo tiempo ocultar un problema de ingesta creciente.
No realice la deduplicación solo en account_id y event_name. Una cuenta puede completar legítimamente la misma acción muchas veces. Del mismo modo, los reintentos pueden ser eventos analíticos válidos cuando la cuestión es la confiabilidad, incluso si la conversión del producto cuenta solo el resultado final exitoso.
Los eventos tardíos requieren una ventana de corrección acotada. Un duplicado que llegue después de que se haya exportado un informe puede cambiar el recuento final, por lo que debe registrar el límite de presentación de informes y si los resultados son provisionales.
Utilice Receta de ID de evento duplicado para cuantificar la duplicación de fuentes y Funciones de ventana para comprender la operación de clasificación. El guía de esquema de eventos explica cómo agregar identificadores que hacen que la regla sea auditable.