Data Deduplizierung-Duplikate in Query Service

Adobe Experience Platform Query Service unterstützt Data Deduplizierung-Duplikate, wenn möglicherweise eine ganze Zeile aus einer Berechnung entfernt oder ein bestimmter Feldsatz ignoriert werden muss, da nur ein Teil der Daten in der Zeile ein Duplikat ist. Das gängige Deduplizierung-Duplikate besteht darin, die ROW_NUMBER() Funktion über ein Fenster hinweg für eine ID oder mehrere IDs über einen bestimmten Zeitraum hinweg (unter Verwendung des Experience Data Model (XDM-) timestamp Felds) zu verwenden, um ein neues Feld zurückzugeben, das die Anzahl der erkannten Duplikat angibt. Ist dieser Wert 1der Wert, bezieht sich dies auf die ursprüngliche Instanz und in den meisten Fällen auf die Instanz, die Sie verwenden möchten, wobei jede andere Instanz ignoriert wird. Dies erfolgt meist innerhalb einer Unterauswahl, bei der das Deduplizierung-Duplikate in einer höheren Ebene wie der Durchführung einer Aggregat-Anzahl durchgeführt wird. SELECT

Anwendungsbeispiele

Einige Anwendungsfälle für Deduplizierung-Duplikate sind im gesamten Datumsbereich global und einige sind auf eine einzige Besucher- oder Endbenutzer-ID innerhalb der identityMapbeschränkt.

In diesem Dokument werden Beispiele für die Unterauswahl und die vollständige Abfrage von Beispielen für die Deduplizierung von drei gängigen Anwendungsfällen erläutert:

ExperienceEvents

Bei Duplikat ExperienceEvents sollten Sie die gesamte Zeile ignorieren.

ACHTUNG

Für viele DataSets in Experience Platform, einschließlich der vom Adobe Analytics Data Connector erstellten, wurde bereits ein Deduplizierung-Duplikate auf ExperienceEvent-Ebene angewendet. Daher ist eine erneute Anwendung dieser Deduplizierung-Duplikate-Ebene nicht erforderlich und wird Ihre Abfrage verlangsamen. Es ist wichtig, die Quelle Ihrer DataSets zu verstehen und zu wissen, ob Deduplizierung-Duplikate auf ExperienceEvent-Ebene bereits angewendet wurde. Für alle Streaming-DataSets (z. B. von Adobe Target) müssen Sie Deduplizierung-Duplikate auf ExperienceEvent-Ebene anwenden, da diese Datenquellen eine Semantik von "mindestens einmal"aufweisen.

Anwendungsbereich: Global

Fensterschlüssel: id

Unterauswahl

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

Vollständiges Beispiel

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

Käufe

Wenn Sie Duplikat-Käufe haben, möchten Sie wahrscheinlich den Großteil der ExperienceEvent-Zeile behalten, jedoch die mit dem Kauf verknüpften Felder (z. B. die commerce.orders Metrik) ignorieren. Für Käufe gibt es ein spezielles Feld für die Kauf-ID. Dieses Feld ist commerce.order.purchaseIDvorhanden.

Anwendungsbereich: Besucher

Fensterschlüssel: identityMap[$NAMENSRAUM].id & commerce.order.purchaseID

Unterauswahl

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

Vollständiges Beispiel

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

Metriken

Wenn Sie eine Metrik verwenden, die die optionale eindeutige ID verwendet, und ein Duplikat dieser ID angezeigt wird, sollten Sie diesen Metrikwert ignorieren und den Rest des ExperienceEvent beibehalten. In XDM verwenden fast alle Metriken den Measure Datentyp, der ein optionales id Feld enthält, das Sie zum Deduplizierung-Duplikate verwenden können.

Anwendungsbereich: Besucher

Fensterschlüssel: identityMap[$NAMENSRAUM].id & id des Measure-Objekts

Unterauswahl

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

Vollständiges Beispiel

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

Auf dieser Seite