Guida alla risoluzione dei problemi di Data Prep
Questo documento contiene le risposte alle domande frequenti su Adobe Experience Platform Data Prep e una guida alla risoluzione dei problemi relativi agli errori più comuni. Per domande e informazioni sulla risoluzione dei problemi relativi alle API di Experience Platform in generale, consulta la guida alla risoluzione dei problemi API di Adobe Experience Platform.
Domande frequenti
Di seguito è riportato un elenco delle domande frequenti su Data Prep e relative risposte.
Come vengono risolti gli errori di trasformazione?
Data Prep localizza tutti gli errori di trasformazione nella colonna in cui si sono verificati. Di conseguenza, tale colonna viene annullata e il resto della riga continua a essere elaborato. Questi problemi di trasformazione vengono registrati come Avvisi. È consigliabile rivedere periodicamente gli avvisi e modificare la logica di trasformazione per tenere conto dei problemi di trasformazione. Questo aumenterà la qualità dei dati acquisiti in Experience Platform.
Se le colonne contrassegnate come Obbligatorie vengono annullate a causa di problemi di trasformazione, la riga non verrà acquisita. Quando è abilitata l’acquisizione parziale dei dati, puoi impostare la soglia di tali rifiuti prima che l’intero flusso non riesca. Se l’attributo nullified non influisce su alcuna convalida a livello di schema, la riga continua a essere acquisita.
Verranno rifiutate anche tutte le righe non valide anche senza errori di trasformazione. Ad esempio, un flusso di acquisizione dati può avere una mappatura pass-through (nessuna logica di trasformazione) a un campo obbligatorio e non esiste un valore in ingresso per tale attributo. Questa riga verrà rifiutata.
Come posso eliminare i caratteri speciali in un campo?
È possibile eliminare i caratteri speciali in un campo utilizzando ${...}
. Tuttavia, i file JSON che contengono campi con un punto (.
) non sono supportati da questo meccanismo. Quando si interagisce con le gerarchie, se un attributo figlio ha un punto (.
), è necessario utilizzare una barra rovesciata (\
) per eliminare i caratteri speciali. Ad esempio, address
è un oggetto che contiene l'attributo street.name
, che può quindi essere indicato come address.street\.name
invece di address.street.name
.
Qual è la lunghezza massima dei campi calcolati?
I campi calcolati hanno una lunghezza massima di 4096 caratteri.
La mia acquisizione non è riuscita a causa della convalida su un attributo, ma tale attributo è presente correttamente nel file. Cos'è esattamente che non va?
Assicurati che il tipo di dati per ogni campo corrisponda al tipo definito nello schema. Inoltre, è necessario rispettare vincoli quali "Obbligatorio", "enum" e "formato".
I dati da acquisire devono essere conformi allo schema Experience Data Model (XDM) definito in Experience Platform. Se l’attributo non corrisponde al tipo o al formato previsto specificato nello schema, l’acquisizione non riuscirà.
Se vengono utilizzate le funzioni di preparazione dati, assicurati che la trasformazione risulti negli attributi corretti. È possibile esaminare gli attributi durante il processo di impostazione del flusso di lavoro origini. Durante il passaggio di mappatura, selezionare Nuovo tipo di campo, quindi selezionare Aggiungi campo calcolato. Quindi, utilizza l’interfaccia del campo calcolato per visualizzare in anteprima ogni funzione.
Come posso rimuovere i valori di dati errati dai record di acquisizione in streaming o batch?
È possibile utilizzare l’interfaccia di mappatura della preparazione dati per eseguire un filtro a livello di colonna solo mappando le colonne che presentano i dati richiesti. Puoi anche utilizzare i campi calcolati per trasformare i dati utilizzando le funzioni di supporto.
Il filtro a livello di riga è attualmente disponibile solo per il connettore di origine Adobe Analytics.
Dopo l’acquisizione, puoi utilizzare il distillatore di dati per pulire, modellare e manipolare i dati utilizzando SQL. Tuttavia, questo processo richiederà l'eliminazione del batch con i record errati e la riacquisizione di un nuovo batch creato dal risultato dell'istruzione SQL.
-
Data lake: puoi rimuovere solo i record già acquisiti eliminando e riacquisendo il batch in cui si trova il record.
-
Real-Time Customer Profile: è possibile sovrascrivere i record basati su attributi acquisendo nuovi record, ma non è possibile rimuovere i record evento esperienza.
-
Servizio identità: non è possibile rimuovere i record in modo definitivo in Identity Service. Dovrai eliminare l’intero profilo e ricaricarlo con i record corretti utilizzando l’API di eliminazione profilo.
Quali sono le best practice per utilizzare i campi calcolati nei dati di GIF?
Puoi utilizzare le funzioni di mappatura della preparazione dati durante il passaggio di mappatura dei dati di origine sullo schema XDM per creare un nuovo campo calcolato.
Quando inserisci i dati di Adobe Analytics come origine, lo schema creato viene abilitato automaticamente per il profilo?
I dati di Analytics non vengono configurati automaticamente per il profilo. Dopo aver configurato il connettore di origine, devi accedere al set di dati e allo schema e abilitarli per l’acquisizione del profilo.
Quando crei un flusso di dati di origine Analytics in una sandbox di produzione, vengono creati due flussi di dati:
- Un flusso di dati che esegue una retrocompilazione di 13 mesi dei dati storici della suite di rapporti nel data lake. Questo flusso di dati termina quando la retrocompilazione è completa.
- Un flusso di dati che invia dati live al data lake e al profilo. Questo flusso di dati viene eseguito in modo continuo.
Come posso usare lettere minuscole di un valore all’interno di un oggetto mappa utilizzando le funzioni di preparazione dati?
È possibile recuperare il valore utilizzando la funzione map_get_values
e quindi impostarlo in minuscolo utilizzando la funzione lower:
lower(map_get_values(mapObject, 'keyName'))
È possibile utilizzare la stessa funzione per rendere minuscolo un oggetto mappa. Tuttavia, non è possibile eseguire un ciclo in un'intera mappa e rendere ogni elemento in minuscolo.
È possibile utilizzare le funzioni di preparazione dati in modo nidificato?
Sì, puoi utilizzare una funzione di preparazione dati all’interno di un’altra funzione per risolvere i problemi relativi a funzionalità di preparazione dati complesse durante l’acquisizione dei dati.
Ad esempio, se desideri definire un campo come nullo in base a una condizione specifica, puoi utilizzare la funzione "iif" per verificare la presenza di tale campo. Se la funzione restituisce true
, è possibile utilizzare "nullify()" e, se restituisce false
, è possibile utilizzare il rispettivo campo.
Se il campo era marketing_type, puoi utilizzare ".equals" per controllare il valore nel campo marketing_type e nidificarlo all’interno di una funzione "iif". Se restituisce true
, è possibile utilizzare la funzione "nullify()" come illustrato di seguito:
iif(marketing_type.equals("phyMail"), nullify(), marketing_type)
Di seguito sono riportati alcuni esempi di come nidificare le funzioni di preparazione dati utilizzando iif, equals e nullify:
- ESPRESSIONE: Obbligatoria L'espressione booleana in fase di valutazione.
- TRUE_VALUE: Obbligatorio Il valore restituito se l'espressione restituisce true.
- FALSE_VALUE: Obbligatorio Il valore restituito se l'espressione restituisce false.
- STRING1: Obbligatorio La prima stringa da confrontare.
- STRING2: Obbligatorio Seconda stringa da confrontare.
Di seguito è riportato un esempio di come è possibile nidificare le funzioni, supponendo che il campo da valutare sia "marketing_type".
iif(marketing_type.equals("phyMail"), nullify(), marketing_type)
Quindi, dato che hai i seguenti tre campi:
- marketing_type: (e-mail, phyMail, push, sms, telefono)
- total_consents: numero compreso tra 4000 e 5500
- data: da feb a marzo 2024
Puoi utilizzare e nidificare le tre funzioni elencate sopra per manipolare i tre campi:
- iif(marketing_type.equals("email"), nullify(), iif(marketing_type.equals("push"), "push-notification", marketing_type)
- iif(marketing_type.equals("phyMail"), nullify(), iif(marketing_type.equals("sms"), "text-message", marketing_type)
- iif(total_consents > 5000, iif(marketing_type.equals("phone"), nullify(), marketing_type), "insufficiente-consents")
- iif(date.equals("3/21/24"), iif(marketing_type.equals("push"), nullify(), marketing_type), "not-March")
- iif(total_consents < 4500, iif(marketing_type.equals("sms"), "low-consent-sms", marketing_type), "high-consents")
- iif(marketing_type.equals("email"), iif(total_consents > 5000, nullify(), "email-low-consents"), marketing_type)
- iif(marketing_type.equals("push"), iif(total_consents < 4500, "low-consent-push", nullify()), marketing_type)
- iif(total_consents >= 5500, iif(marketing_type.equals("phyMail"), nullify(), "high-consents"), marketing_type)