Deduplicazione dei dati in Query Service

Adobe Experience Platform Query Service supporta la deduplicazione dei dati. È possibile eseguire la deduplicazione dei dati quando è necessario rimuovere un'intera riga da un calcolo o ignorare un insieme specifico di campi, perché solo parte dei dati nella riga è informazione duplicata.

La deduplicazione richiede in genere l'utilizzo della funzione ROW_NUMBER() in una finestra per un ID (o una coppia di ID) nel tempo ordinato, che restituisce un nuovo campo che rappresenta il numero di volte in cui è stato rilevato un duplicato. Il tempo è spesso rappresentato utilizzando il campo Experience Data Model (XDM) timestamp.

Quando il valore di ROW_NUMBER() è 1, si riferisce all'istanza originale. In genere, si tratta dell’esempio che si desidera utilizzare. Questa operazione viene spesso eseguita all'interno di una sottoselezione, dove la deduplicazione viene eseguita in un livello superiore SELECT, come per l'esecuzione di un conteggio aggregato.

I casi di utilizzo della deduplicazione possono essere globali o vincolati a un singolo utente o a un ID utente finale all'interno di identityMap.

In questo documento viene illustrato come eseguire la deduplicazione per tre casi d’uso comuni: Eventi esperienza, acquisti e metriche.

Ogni esempio include l'ambito, la chiave della finestra, un profilo del metodo di deduplicazione, nonché la query SQL completa.

Eventi esperienza

Nel caso di eventi esperienza duplicati, è probabile che si desideri ignorare l'intera riga.

ATTENZIONE

Molti set di dati in Experience Platform, inclusi quelli prodotti dal Connettore dati Adobe Analytics , dispongono già di una deduplicazione a livello di esperienza. Pertanto, la riapplicazione di questo livello di deduplicazione non è necessaria e rallenta la query.

È importante comprendere l'origine dei set di dati e sapere se è già stata applicata la deduplicazione a livello di Experience-Event. Per tutti i set di dati in streaming (ad esempio, quelli provenienti da Adobe Target), sarà necessario applicare la deduplicazione a livello di esperienza, poiché tali origini dati hanno una semantica "almeno una volta".

Ambito: Globale

Tasto finestra: id

Esempio di deduplicazione

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

Full example

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

Acquisti

Se disponete di acquisti duplicati, è probabile che desideriate mantenere la maggior parte della riga Evento esperienza, ma ignorare i campi associati all'acquisto (ad esempio la metrica commerce.orders). Gli acquisti contengono un campo speciale per l'ID acquisto, che è commerce.order.purchaseID.

Ambito: Visitatore

Chiave della finestra: identityMap[$NAMESPACE].id & commerce.order.purchaseID

Esempio di deduplicazione

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

Full example

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

Metriche

Se hai una metrica che utilizza l'ID univoco facoltativo e viene visualizzato un duplicato di tale ID, probabilmente vorrai ignorare tale valore della metrica e mantenere il resto dell'Evento esperienza.

In XDM, quasi tutte le metriche utilizzano il tipo di dati Measure che include un campo opzionale id utilizzabile per la deduplicazione.

Ambito: Visitatore

Chiave della finestra:oggetto identityMap[$NAMESPACE].id e id of Measure

Esempio di deduplicazione

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

Full example

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

Passaggi successivi

Questo documento descrive come eseguire la deduplicazione dei dati in Query Service, nonché esempi di deduplicazione dei dati. Per ulteriori procedure ottimali per la scrittura di query tramite Query Service, consultare la guida alla scrittura di query.

In questa pagina