Esempio: Campo derivato permanente
Si potrebbe avere un processo Seleziona configurato per scegliere gli ID sulla base di un vincolo su un campo derivato, collegato a un processo Snapshot per emettere i record selezionati che comprendono quel campo derivato. Se si contrassegna il campo derivato in modo che sia permanente, il valore calcolato viene trasmesso dal processo Seleziona al processo Snapshot.
Un altro uso dei campi derivati permanenti è con qualsiasi campo derivato di tipo aggregato (ad esempio AVG o GROUPBY). Questi campi aggregati vengono calcolati sulla base delle molteplici righe di dati all'interno della cella corrente, pertanto il valore di questi campi aggregati cambia, così come cambia il contenuto della cella. Con i campi derivati permanenti sarà possibile scegliere di mantenere il valore calcolato originale e poi di portarlo verso altri processi. Nel caso in cui si sceglie di ricalcolare invece il campo derivato, si ottiene un valore calcolato sulla base dei record restanti nella cella corrente.
Quando un processo prende più input, come ad esempio un processo di Snapshot che lavora con l'input da due processi Seleziona, tutti i campi derivati permanenti sono disponibili per il processo di downstream.
Nel caso in cui un campo derivato non sia disponibile in tutti i processi Seleziona in ingresso, e sia compreso nell'output per un processo Snapshot, allora il processo Snapshot visualizza un valore ZERO per il campo derivato permanente in tutte le righe di output dal processo Seleziona che non aveva un campo derivato permanente.
Nel caso in cui un campo derivato permanente non sia disponibile in tutti i processi Selezione in ingresso, e nel caso in cui venga usato per definire un processo Segmento, allora il processo Segmento contiene dei segmenti vuoti per i processi Seleziona che non avevano un campo derivato permanente.
Il processo Segmento rimane non configurato nel caso in cui si cerchi di definire un segmento con un'espressione che utilizza più di un campo derivato persistente non disponibile in tutti i processi Seleziona.
Le seguenti linee guida si applicano ai campi derivati permanenti (PDF):
*
*
*
*
*
*
Tuttavia, quando si usa un campo derivato sulla base di un campo tabella, l'output comprende un campo tabella indirettamente. Quindi, sarà disponibile un record per ogni istanza di un valore ID. In altre parole, se il valore ID si verifica sette volte nei dati, verranno emessi sette record.
I campi derivati persistenti archiviano solo un valore singolo per ciascun ID del destinatario, il quale viene selezionato in modalità casuale dai valori disponibili. Ciò significa che quando si sta lavorando con dati non normalizzati, sarà necessario servirsi di una funzione macro GROUPBY per ottenere il comportamento desiderato.
Ad esempio, ipotizziamo di voler trovare dalla tabella delle transazioni d'acquisto l'importo in dollari più alto in una singola transazione da un cliente e di volerlo salvare come campo derivato permanente per la lavorazione downstream. Si potrebbe scrivere un campo derivato (e poi contrassegnarlo come campo permanente) come segue:
Highest_purchase_amount = groupby(CID, maxof, Purch_Amt)
Rispetto ai dati delle transazioni d'acquisto non normalizzati come ad esempio questo, nel nostro caso si potrebbe scrivere così:
Quando il campo derivato viene reso permanente, sceglie (casualmente) un qualsiasi valore (sono tutti $300) e rende permanente il valore $300 per il cliente A.
Un secondo esempio, meno ovvio, potrebbe consistere nel selezionare un punteggio modello predittivo da una tabella di punteggio per uno specifico modello X. In questo caso il campo derivato potrebbe essere così:
ModelX_score = groupby(CID, maxof, if(Model = 'X', 1, 0), Score)
E i dati potrebbero essere:
Rendendo permanente il campo derivato, ModelX_Score, da' il valore desiderati al valore del punteggio di 80. Sarebbe sbagliato creare un campo derivato:
Bad_ModelX_score = if(Model = 'X', Score, NULL)
Ciò porterebbe a questo risultato:
Quindi, quando si rende permanente il campo derivato Bad_ModelX_score, il valore permanente potrebbe essere ZERO od 80. Nel caso in cui si stia lavorando con dati non normalizzati e i valori del campo derivato non siano tutti gli stessi, rendendo persistente il campo derivato potrebbe determinare la restituzione di un qualsiasi valore. Ad esempio, definendo Derived_field_Score = SCORE e rendendolo persistente si potrebbe ottenere il valore 57, 72, o 80 per il cliente A. Per garantire il comportamento desiderato, sarà necessario utilizzare la macro GROUPBY sull'ID cliente e garantire che il valore del campo derivato sia lo stesso per tutti i dati di quel cliente.