Caso di utilizzo dei set di dati derivati basati su Decile

I set di dati derivati semplificano casi d’uso complessi per l’analisi di dati provenienti dal data lake che possono essere utilizzati con altri servizi Platform a valle o pubblicati nei dati del profilo cliente in tempo reale.

Questo caso d’uso di esempio illustra come creare set di dati derivati basati su decile da utilizzare con i dati del profilo cliente in tempo reale. Utilizzando come esempio uno scenario di fidelizzazione di una compagnia aerea, questa guida ti spiega come creare un set di dati che utilizza decili per categoria per segmentare e creare tipi di pubblico in base agli attributi classificati.

Sono illustrati i seguenti concetti chiave:

  • Creazione di schemi per il bucket decile.
  • Creazione decile categorica.
  • Creazione di set di dati derivati complessi.
  • Calcolo dei decili in un periodo di lookback.
  • Una query di esempio per dimostrare l’aggregazione, la classificazione e l’aggiunta di identità univoche che consentono la generazione di tipi di pubblico in base a questi bucket di decile.

Introduzione

Questa guida richiede una buona conoscenza di esecuzione di query in Query Service e i seguenti componenti di Adobe Experience Platform:

Obiettivi

L’esempio fornito in questo documento utilizza i decili per creare set di dati derivati per la classificazione dei dati da uno schema di fedeltà delle compagnie aeree. I set di dati derivati ti consentono di massimizzare l’utilità dei dati identificando un pubblico in base al primo "n" % per una categoria selezionata.

Creare set di dati derivati basati su decile

Per definire la classificazione dei decili in base a una dimensione particolare e a una metrica corrispondente, è necessario progettare uno schema per consentire il bucket decile.

Questa guida utilizza un set di dati sulla fedeltà delle compagnie aeree per dimostrare come utilizzare Query Service per creare decili in base alle miglia percorse in vari periodi di lookback.

Utilizzare Query Service per creare decili

Query Service consente di creare un set di dati contenente decili per categoria, che possono quindi essere segmentati per creare tipi di pubblico in base alla classificazione degli attributi. I concetti visualizzati negli esempi seguenti possono essere applicati per creare altri set di dati a bucket decile, purché sia definita una categoria e sia disponibile una metrica.

L’esempio di dati sulla fedeltà delle compagnie aeree utilizza un Classe XDM ExperienceEvents. Ogni evento è una registrazione di una transazione commerciale per chilometraggio, accreditata o addebitata, e lo stato di fedeltà di appartenenza di "Flyer", "Frequent", "Silver" o "Gold". Il campo dell’identità primaria è membershipNumber.

Set di dati di esempio

Il set di dati iniziale sulla fedeltà della compagnia aerea per questo esempio è "Dati sulla fedeltà della compagnia aerea" e ha il seguente schema. L’identità primaria dello schema è _profilefoundationreportingstg.membershipNumber.

Un diagramma dello schema Dati fedeltà compagnia aerea.

Dati di esempio

Nella tabella seguente vengono visualizzati i dati di esempio contenuti nel _profilefoundationreportingstg oggetto utilizzato per questo esempio. Fornisce il contesto per l’utilizzo di bucket decile per creare set di dati derivati complessi.

NOTE
Per brevità, l’ID tenant _profilefoundationreportingstg è stato omesso dall’inizio dello spazio dei nomi nei titoli delle colonne e nelle successive menzioni in tutto il documento.
.membershipNumber
.emailAddress.address
.transactionDate
.transactionType
.transactionDetails
.mileage
.loyaltyStatus
C435678623
sfeldmark1vr@studiopress.com
01/01/2022
STATUS_MILES
Nuovo membro
5000
VOLANTINO
B 789279247
pgalton32n@barnesandnoble.com
01/02/2022
AWARD_MILES
JFK-FRA
7500
ARGENTO
B 789279247
pgalton32n@barnesandnoble.com
01/02/2022
STATUS_MILES
JFK-FRA
7500
ARGENTO
B 789279247
pgalton32n@barnesandnoble.com
10/02/2022
AWARD_MILES
FRA-JFK
5000
ARGENTO
A123487284
rritson1zn@sciencedaily.com
07/01/2022
STATUS_MILES
Nuova carta di credito
10000
VOLANTINO

Generare set di dati decile

Nei dati sulla fedeltà delle compagnie aeree riportati sopra, la .mileage il valore contiene il numero di miglia percorse da un membro per ogni singolo volo effettuato. Questi dati vengono utilizzati per creare decili per il numero di miglia percorse durante i lookback a vita e per una varietà di periodi di lookback. A questo scopo, viene creato un set di dati che contiene decili in un tipo di dati mappa per ogni periodo di lookback e un decile appropriato per ogni periodo di lookback assegnato in membershipNumber.

Crea uno "Schema del decile per la fedeltà della compagnia aerea" per creare un set di dati decile utilizzando Query Service.

Diagramma dello schema del decile della fedeltà della compagnia aerea.

Abilitare lo schema per Real-Time Customer Profile

I dati acquisiti in Experienci Platform per l’utilizzo da parte di Real-Time Customer Profile devono essere conformi a uno schema Experience Data Model (XDM) abilitato per il profilo. Per abilitare uno schema per il profilo, è necessario implementare la classe XDM Individual Profile o XDM ExperienceEvent.

Abilita lo schema per l’utilizzo in Real-Time Customer Profile utilizzando lo Schema Registry API (API del registro degli schemi). o Interfaccia utente dell’Editor di schema. Le istruzioni dettagliate su come abilitare uno schema per il profilo sono disponibili nella rispettiva documentazione.

Quindi, crea un tipo di dati da riutilizzare per tutti i gruppi di campi correlati al decile. La creazione del gruppo di campi decile è un passaggio unico per sandbox. Può essere riutilizzato anche per tutti gli schemi relativi al decile.

Creare uno spazio dei nomi delle identità e contrassegnarlo come identificatore primario identity-namespace

A qualsiasi schema creato per l'utilizzo con decili deve essere assegnata un'identità primaria. È possibile definire un campo di identità nell’interfaccia utente degli schemi di Adobe Experience Platform, o tramite API del registro dello schema.

Query Service consente inoltre di impostare un’identità o un’identità primaria per i campi di set di dati dello schema ad hoc direttamente tramite SQL. Consulta la documentazione su impostazione di un’identità secondaria e primaria in identità di schema ad hoc per ulteriori informazioni.

Creare una query per il calcolo dei decili in un periodo di lookback create-a-query

L’esempio seguente illustra la query SQL per calcolare un decile in un periodo di lookback.

È possibile creare un modello utilizzando l’Editor query nell’interfaccia utente o tramite API servizio query.

CREATE TABLE AS airline_loyality_decile
{  WITH summed_miles_1 AS (
        SELECT _profilefoundationreportingstg.membershipNumber AS membershipNumber,
            _profilefoundationreportingstg.loyaltyStatus AS loyaltyStatus,
            SUM(_profilefoundationreportingstg.mileage) AS totalMiles
        FROM airline_loyalty_data
        WHERE _profilefoundationreportingstg.transactionDate < (MAKE_DATE(YEAR(CURRENT_DATE), MONTH(CURRENT_DATE), 1) - MAKE_YM_INTERVAL(0, 0))
    GROUP BY 1,2
    ),
    summed_miles_3 AS (
        SELECT _profilefoundationreportingstg.membershipNumber AS membershipNumber,
            _profilefoundationreportingstg.loyaltyStatus AS loyaltyStatus,
            SUM(_profilefoundationreportingstg.mileage) AS totalMiles
        FROM airline_loyalty_data
        WHERE _profilefoundationreportingstg.transactionDate < (MAKE_DATE(YEAR(CURRENT_DATE), MONTH(CURRENT_DATE), 1) - MAKE_YM_INTERVAL(0, 1))
    GROUP BY 1,2
    ),
    summed_miles_6 AS (
        SELECT _profilefoundationreportingstg.membershipNumber AS membershipNumber,
            _profilefoundationreportingstg.loyaltyStatus AS loyaltyStatus,
            SUM(_profilefoundationreportingstg.mileage) AS totalMiles
        FROM airline_loyalty_data
        WHERE _profilefoundationreportingstg.transactionDate < (MAKE_DATE(YEAR(CURRENT_DATE), MONTH(CURRENT_DATE), 1) - MAKE_YM_INTERVAL(0, 4))
    GROUP BY 1,2
    ),
    rankings_1 AS (
        SELECT membershipNumber,
            loyaltyStatus,
            totalMiles,
            NTILE(10) OVER (PARTITION BY loyaltyStatus ORDER BY totalMiles DESC) AS decileBucket
        FROM summed_miles_1
    ),
    rankings_3 AS (
        SELECT membershipNumber,
            loyaltyStatus,
            totalMiles,
            NTILE(10) OVER (PARTITION BY loyaltyStatus ORDER BY totalMiles DESC) AS decileBucket
        FROM summed_miles_3
    ),
    rankings_6 AS (
        SELECT membershipNumber,
            loyaltyStatus,
            totalMiles,
            NTILE(10) OVER (PARTITION BY loyaltyStatus ORDER BY totalMiles DESC) AS decileBucket
        FROM summed_miles_6
    ),
    map_1 AS (
        SELECT membershipNumber,
            MAP_FROM_ARRAYS(COLLECT_LIST(loyaltyStatus), COLLECT_LIST(decileBucket)) AS decileMonth1
        FROM rankings_1
        GROUP BY membershipNumber
    ),
    map_3 AS (
        SELECT membershipNumber,
            MAP_FROM_ARRAYS(COLLECT_LIST(loyaltyStatus), COLLECT_LIST(decileBucket)) AS decileMonth3
        FROM rankings_3
        GROUP BY membershipNumber
    ),
    map_6 AS (
        SELECT membershipNumber,
            MAP_FROM_ARRAYS(COLLECT_LIST(loyaltyStatus), COLLECT_LIST(decileBucket)) AS decileMonth6
        FROM rankings_6
        GROUP BY membershipNumber
    ),
    all_memberships AS (
        SELECT DISTINCT _profilefoundationreportingstg.membershipNumber AS membershipNumber FROM airline_loyalty_data
    )
    SELECT STRUCT(
            all_memberships.membershipNumber AS membershipNumber,
            STRUCT(
                    map_1.decileMonth1 AS decileMonth1,
                    map_3.decileMonth3 AS decileMonth3,
                    map_6.decileMonth6 AS decileMonth6
            ) AS decilesMileage
        ) AS _profilefoundationreportingstg
    FROM all_memberships
        LEFT JOIN map_1 ON  (all_memberships.membershipNumber = map_1.membershipNumber)
        LEFT JOIN map_3 ON  (all_memberships.membershipNumber = map_3.membershipNumber)
        LEFT JOIN map_6 ON  (all_memberships.membershipNumber = map_6.membershipNumber)
    }

Revisione query

Le sezioni della query di esempio vengono esaminate più dettagliatamente di seguito.

Periodi di lookback

Il tipo di dati decile contiene un bucket per i lookback a 1, 3, 6, 9, 12 e durata. La query utilizza periodi di lookback di 1, 3 e 6 mesi, pertanto ogni sezione conterrà alcune query "ripetute" per creare tabelle temporanee per ogni periodo di lookback.

NOTE
Se i dati di origine non dispongono di una colonna che può essere utilizzata per determinare un periodo di lookback, tutte le classificazioni delle classi decile verranno eseguite in decileMonthAll.

Aggregazione

Utilizza espressioni di tabella comuni (CTE, Common Table Expression) per aggregare il chilometraggio prima di creare periodi fissi. Questo fornisce i chilometri totali per un periodo di lookback specifico. I CTE esistono temporaneamente e sono utilizzabili solo nell’ambito della query più grande.

summed_miles_1 AS (
    SELECT _profilefoundationreportingstg.membershipNumber AS membershipNumber,
           _profilefoundationreportingstg.loyaltyStatus AS loyaltyStatus,
           SUM(_profilefoundationreportingstg.mileage) AS totalMiles
    FROM airline_loyalty_data
    WHERE _profilefoundationreportingstg.transactionDate < (MAKE_DATE(YEAR(CURRENT_DATE), MONTH(CURRENT_DATE), 1) - MAKE_YM_INTERVAL(0, 0))
    GROUP BY 1,2
)

Il blocco viene ripetuto due volte nel modello (summed_miles_3 e summed_miles_6) con una modifica nel calcolo della data al fine di generare i dati per gli altri periodi di lookback.

È importante notare le colonne di identità, dimensione e metrica per la query (membershipNumber, loyaltyStatus e totalMiles rispettivamente).

Classificazione

I decili consentono di eseguire il bucket categoriale. Per creare il numero di classificazione, NTILE viene utilizzata con un parametro di 10 in una FINESTRA raggruppata per loyaltyStatus campo. Questo si traduce in una classificazione da 1 a 10. Imposta il ORDER BY clausola del WINDOW a DESC per garantire che un valore di classificazione di 1 viene assegnato al più grande all’interno della dimensione.

rankings_1 AS (
    SELECT membershipNumber,
           loyaltyStatus,
           totalMiles,
           NTILE(10) OVER (PARTITION BY loyaltyStatus ORDER BY totalMiles DESC) AS decileBucket
    FROM summed_miles_1
)

Aggregazione mappa

Con più periodi di lookback, devi creare in anticipo le mappe del decile bucket utilizzando MAP_FROM_ARRAYS e COLLECT_LIST funzioni. Nello snippet di esempio: MAP_FROM_ARRAYS crea una mappa con una coppia di chiavi (loyaltyStatus) e valori (decileBucket). COLLECT_LIST restituisce un array con tutti i valori nella colonna specificata.

map_1 AS (
    SELECT membershipNumber,
           MAP_FROM_ARRAYS(COLLECT_LIST(loyaltyStatus), COLLECT_LIST(decileBucket)) AS decileMonth1
    FROM rankings_1
    GROUP BY membershipNumber
)
NOTE
L’aggregazione della mappa non è necessaria se la classificazione decile è richiesta solo per un periodo di vita.

Identità univoche

L’elenco delle identità univoche (membershipNumber) è necessario per creare un elenco univoco di tutte le appartenenze.

all_memberships AS (
    SELECT DISTINCT _profilefoundationreportingstg.membershipNumber AS membershipNumber FROM airline_loyalty_data
)
NOTE
Se la classificazione decile è necessaria solo per un periodo di durata, questo passaggio può essere omesso e l’aggregazione può essere eseguita da membershipNumber possono essere eseguite nel passaggio finale.

Unire tutti i dati temporanei

Il passaggio finale consiste nell’unire tutti i dati temporanei in un modulo identico alla struttura dei decili nel gruppo di campi.

SELECT STRUCT(
           all_memberships.membershipNumber AS membershipNumber,
           STRUCT(
                map_1.decileMonth1 AS decileMonth1,
                map_3.decileMonth3 AS decileMonth3,
                map_6.decileMonth6 AS decileMonth6
           ) AS decilesMileage
       ) AS _profilefoundationreportingstg
FROM all_memberships
    LEFT JOIN map_1 ON  (all_memberships.membershipNumber = map_1.membershipNumber)
    LEFT JOIN map_3 ON  (all_memberships.membershipNumber = map_3.membershipNumber)
    LEFT JOIN map_6 ON  (all_memberships.membershipNumber = map_6.membershipNumber)

Se sono disponibili solo i dati relativi al ciclo di vita, la query verrà visualizzata come segue:

SELECT STRUCT(
           rankings.membershipNumber AS membershipNumber,
           STRUCT(
                MAP_FROM_ARRAYS(COLLECT_LIST(loyaltyStatus), COLLECT_LIST(decileBucket)) AS decileMonthAll
           ) AS decilesMileage
       ) AS _profilefoundationreportingstg
FROM rankings
GROUP BY rankings.membershipNumber

Nei risultati della query viene garantita una correlazione tra il numero di classificazione e il percentile a causa dell’utilizzo di decili. Ogni classificazione equivale al 10%, pertanto l’identificazione di un pubblico in base al 30% più numeroso deve mirare solo ai livelli 1, 2 e 3.

Eseguire il modello di query

Esegui la query per popolare il set di dati decile. Puoi anche salvare la query come modello e pianificarla per l’esecuzione a una cadenza. Quando viene salvata come modello, la query può anche essere aggiornata per utilizzare il pattern di creazione e inserimento che fa riferimento al table_exists comando. Ulteriori informazioni su come utilizzare il table_existsIl comando si trova nel Guida alla sintassi SQL.

Passaggi successivi

Il caso d’uso di esempio fornito sopra evidenzia i passaggi per rendere disponibili i set di dati derivati basati su decile in Real-Time Customer Profile. Questo consente al servizio di segmentazione, tramite un’interfaccia utente o un’API RESTful, di generare tipi di pubblico in base a questi decile bucket. Consulta la Panoramica del servizio di segmentazione per informazioni su come creare, valutare e accedere ai segmenti.

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