의 데이터 중복 제거 Query Service
Adobe Experience Platform Query Service 는 데이터 중복 제거를 지원합니다. 데이터 중복 제거는 행에서 데이터의 일부만 중복 정보이므로 계산에서 전체 행을 제거하거나 특정 필드 세트를 무시해야 하는 경우 수행할 수 있습니다.
중복 제거는 일반적으로 다음을 사용합니다. ROW_NUMBER()
순서가 지정된 시간 경과에 따른 ID(또는 ID 쌍)에 대한 창 간 함수. 이 함수는 중복이 감지된 횟수를 나타내는 새 필드를 반환합니다. 시간은 종종 다음을 사용하여 표현됩니다. Experience Data Model (XDM) timestamp
필드.
값: ROW_NUMBER()
은(는) 1
즉, 원래 인스턴스를 참조합니다. 일반적으로 이 인스턴스를 사용합니다. 이 작업은 대부분 하위 선택 사항에서 수행되며, 하위 선택 사항에서 중복 제거가 더 높은 수준에서 수행됩니다 SELECT
집계 계산을 수행하는 것과 같습니다.
중복 제거 사용 사례는 전역이거나 내에서 단일 사용자 또는 최종 사용자 ID로 제한될 수 있습니다. identityMap
.
이 문서에서는 경험 이벤트, 구매 및 지표의 세 가지 일반적인 사용 사례에 대해 중복 제거를 수행하는 방법에 대해 간략하게 설명합니다.
각 예에는 범위, 창 키, 중복 제거 방법의 개요 및 전체 SQL 쿼리가 포함됩니다.
경험 이벤트 experience-events
중복 경험 이벤트의 경우 전체 행을 무시할 수 있습니다.
범위: 글로벌
창 키: id
중복 제거 예
SELECT *,
ROW_NUMBER()
OVER (PARTITION BY id
ORDER BY timestamp ASC
) AS id_dup_num
FROM experience_events
전체 예
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
구매 purchases
중복 구매가 있는 경우 대부분의 구매를 유지할 수 있습니다. Experience Event 행에 연결되지만 구매에 연결된 필드는 무시합니다(예: commerce.orders
지표). 구매에는 다음과 같은 구매 ID에 대한 특수 필드가 포함됩니다. commerce.order.purchaseID
.
를 사용하는 것이 좋습니다. purchaseID
XDM 내의 구매 ID에 대한 표준 의미 필드이므로 방문자 범위 내에서. 방문자 범위는 쿼리가 글로벌 범위를 사용하는 것보다 빠르며 구매 ID가 여러 방문자 ID에 걸쳐 중복될 가능성이 낮으므로 중복 구매 데이터를 제거하는 데 권장됩니다.
범위: 방문자
창 키: identityMap[$네임스페이스].id & commerce.order.purchaseID
중복 제거 예
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
전체 예
아래 예제에서는 구매 ID가 없는 경우 조건 절을 사용하여 이벤트 ID를 사용합니다.
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
지표 metrics
선택적 고유 ID를 사용하는 지표가 있고 해당 ID의 복제본이 표시되는 경우, 해당 지표 값을 무시하고 나머지 경험 이벤트를 유지할 수 있습니다.
XDM에서 거의 모든 지표는 Measure
선택 사항이 포함된 데이터 유형 id
중복 제거에 사용할 수 있는 필드입니다.
범위: 방문자
창 키: identityMap[$네임스페이스]측정 단위 개체의 .id 및 id
중복 제거 예
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
전체 예
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
다음 단계
이 문서에서는 데이터 중복 제거의 예제를 제공하고 쿼리 서비스 내에서 데이터 중복 제거를 수행하는 방법에 대해 간략히 설명했습니다. 쿼리 서비스를 사용하여 쿼리를 작성할 때의 추가 모범 사례는 쿼리 작성 안내서.