Deduplicación de datos en Query Service

Adobe Experience Platform Query Service admite la deduplicación de datos. La deduplicación de datos se puede realizar cuando es necesario quitar una fila completa de un cálculo o ignorar un conjunto específico de campos porque solo parte de los datos de la fila es información duplicada.

La deduplicación normalmente implica el uso de la función ROW_NUMBER() en una ventana para un ID (o un par de ID) a lo largo del tiempo, lo que devuelve un nuevo campo que representa el número de veces que se ha detectado un duplicado. La hora se representa a menudo utilizando el campo Experience Data Model (XDM) timestamp.

Cuando el valor de ROW_NUMBER() es 1, hace referencia a la instancia original. Por lo general, esa es la instancia que desea utilizar. Esto se hará generalmente dentro de una subselección donde la deduplicación se realiza en un nivel superior SELECT, como realizar un recuento acumulado.

Los casos de uso de deduplicación pueden ser globales o restringirse a un único ID de usuario o de usuario final dentro de identityMap.

Este documento describe cómo realizar la anulación de duplicación para tres casos de uso comunes: Eventos de experiencia, compras y métricas.

Cada ejemplo incluye el ámbito, la clave de la ventana, una descripción del método de deduplicación, así como la consulta SQL completa.

Eventos de experiencia experience-events

En el caso de eventos de experiencia duplicados, es probable que desee ignorar toda la fila.

CAUTION
Muchos conjuntos de datos de Experience Platform, incluidos los producidos por el conector de datos de Adobe Analytics, ya tienen deduplicación a nivel de evento de experiencia aplicada. Por lo tanto, la reaplicación de este nivel de deduplicación es innecesaria y ralentiza la consulta.
Es importante comprender el origen de los conjuntos de datos y saber si ya se ha aplicado la anulación de duplicación a nivel de Experience-Event. Para cualquier conjunto de datos que se transmita por secuencias (por ejemplo, los de Adobe Target), deberá aplicar la anulación de duplicación en el nivel de evento de experiencia, ya que esas fuentes de datos tienen una semántica de "al menos una vez".

Ámbito: Global

Clave de ventana: id

Ejemplo de deduplicación

SELECT *,
  ROW_NUMBER()
    OVER (PARTITION BY id
          ORDER BY timestamp ASC
    ) AS id_dup_num
FROM experience_events

Ejemplo completo

SELECT COUNT(*) AS num_events FROM (
  SELECT *,
    ROW_NUMBER()
      OVER (PARTITION BY id
            ORDER BY timestamp ASC
      ) AS id_dup_num
  FROM experience_events
) WHERE id_dup_num = 1

Compras purchases

Si tiene compras duplicadas, es probable que desee conservar la mayor parte de la fila Experience Event, pero ignore los campos vinculados a la compra (como la métrica commerce.orders). Las compras contienen un campo especial para el identificador de compra, que es commerce.order.purchaseID.

Se recomienda usar purchaseID dentro del ámbito del visitante, ya que es el campo semántico estándar para los ID de compra dentro de XDM. Se recomienda el ámbito del visitante para eliminar los datos de compra duplicados porque la consulta es más rápida que el ámbito global y es poco probable que un ID de compra se duplique en varios ID de visitante.

Ámbito: Visitante

Clave de ventana: identityMap[$NAMESPACE].id & commerce.order.purchaseID

Ejemplo de deduplicación

SELECT *,
  IF(LENGTH(commerce.`order`.purchaseID) > 0,
    ROW_NUMBER()
      OVER (PARTITION BY identityMap['ECID'].id, commerce.`order`.purchaseID
            ORDER BY timestamp ASC
      ),
    1) AS purchaseID_dup_num
FROM experience_events
NOTE
En algunos casos en los que los datos originales de Analytics tienen ID de compra duplicados en los ID de visitante, es posible que deba ejecutar el recuento duplicado del ID de compra en todos los visitantes. Cuando el ID de compra no está presente, este método requiere que incluya una condición que, en su lugar, utilice el ID de evento para mantener la consulta lo más rápido posible.

Ejemplo completo

El ejemplo siguiente utiliza una cláusula de condición para utilizar el ID de evento en el caso de que el ID de compra no esté presente.

SELECT SUM(commerce.purchases.value) AS num_purchases FROM (
  SELECT *,
    ROW_NUMBER()
      OVER (PARTITION BY id
            ORDER BY timestamp ASC
      ) AS id_dup_num,
    IF(LENGTH(commerce.`order`.purchaseID) > 0,
      ROW_NUMBER()
        OVER (PARTITION BY identityMap['ECID'].id, commerce.order.purchaseID
              ORDER BY timestamp ASC
        ),
      1) AS purchaseID_dup_num
  FROM experience_events
) WHERE id_dup_num = 1 AND purchaseID_dup_num = 1

Métricas metrics

Si tiene una métrica que utiliza el ID único opcional y aparece un duplicado de ese ID, probablemente quiera ignorar ese valor de métrica y mantener el resto del Evento de experiencia.

En XDM, casi todas las métricas utilizan el tipo de datos Measure que incluye un campo id opcional que podría utilizar para la deduplicación.

Ámbito: Visitante

Clave de ventana: identityMap[$NAMESPACE].id e id. del objeto Measure

Ejemplo de deduplicación

SELECT *,
  IF(LENGTH(application.launches.id) > 0,
    ROW_NUMBER()
      OVER (PARTITION BY identityMap['ECID'].id, application.launches.id
            ORDER BY timestamp ASC
      ),
    1) AS launchesID_dup_num
FROM experience_events

Ejemplo completo

SELECT SUM(application.launches.value) AS num_launches FROM (
  SELECT *,
    ROW_NUMBER()
      OVER (PARTITION BY id
            ORDER BY timestamp ASC
      ) AS id_dup_num,
    IF(LENGTH(application.launches.id) > 0,
      ROW_NUMBER()
        OVER (PARTITION BY identityMap['ECID'].id, application.launches.id
              ORDER BY timestamp ASC
        ),
      1) AS launchesID_dup_num
  FROM experience_events
) WHERE id_dup_num = 1 AND launchesID_dup_num = 1

Pasos siguientes

Este documento proporciona ejemplos de deduplicación de datos y describe cómo realizar la deduplicación de datos dentro del servicio de consultas. Para obtener más prácticas recomendadas al escribir consultas mediante el servicio de consultas, lea la guía para escribir consultas.

recommendation-more-help
ccf2b369-4031-483f-af63-a93b5ae5e3fb