Linee guida per macro personalizzate
Tenere presente le seguenti linee guida durante la creazione o l'utilizzo di una macro personalizzata:
*
*
Se un'origine dati è stata configurata con la proprietà ENABLE_SELECT_SORT_BY = TRUE, è necessario scrivere le macro personalizzate di SQL raw con una clausola ORDER BY per ordinare i record restituiti dai campi chiave del livello destinatario nel quale si sta lavorando. Diversamente, se il criterio di ordinamento non è quello che si aspettava, un errore verrà generato quando la macro personalizzata verrà usata in un campo derivato in un processo Snapshot.
*
*
Quando una macro personalizzata utilizza delle tabelle temporanee nella sua logica sottostante, una tabella temporanea verrà forzata sul database così che la logica riesca.
Tuttavia, se una macro personalizzata è utilizzata in un SELECT di livello principale, non esiste alcuna cronologia che Campaign possa utilizzare per forzare una tabella temporanea nel database, con conseguente errore della logica.
Quindi, durante la creazione di una macro personalizzata che usi SQL semplice, potrebbe esserci bisogno di due versioni della stessa macro personalizzata - una che utilizzi il bonus della tabella temporanea e uno che non lo faccia.
La macro personalizzata senza i bonus della tabella temporanea può essere utilizzata all'inizio di un albero (per esempio, nel primo SELEZIONA). Quella con i bonus della tabella temporanea può essere utilizzata in qualsiasi altra posizione nell'albero dove possa essere inserita una tabella temporanea da poter sfruttare.
*
Ad esempio, se si utilizza una macro personalizzata basata su un SQL raw che restituisce un valore e (in un processo Snapshot ad esempio) si esternalizza la macro personalizzata e un altro campo dalla tabella sulla quale la suddetta macro è basata, Campaign esegue un'unione automatica su quella tabella. Se la tabella non è normalizzata, si finirà con un prodotto Cartesiano (che indica quando il numero di record mostrati è maggiore di quelli attesi).
*
In fase di esecuzione, una macro personalizzata viene risolta ricercando la sua definizione nella tabella di sistema UA_CustomMacros (dove vengono archiviate le definizioni) e poi utilizzata/eseguita.
*
Campaign supporta le query archiviate delle release precedenti. In ogni caso, i riferimenti alle query non uniche già in archivio devono utilizzare la vecchia sintassi:
storedquery(<nome query>)
*
Durante la risoluzione delle variabili utente nelle macro personalizzate, Campaign utilizza il valore corrente della variabile utente durante il controllo della sintassi. Se il valore corrente viene lasciato vuoto, Campaign genera un errore.
*
*
Se si intende impiegare la macro personalizzata in database diversi, si può voler utilizzare un'espressione IBM® anziché un SQL raw, dal momento che un SQL raw può essere specifico per un particolare database.
*
*
Campaign gestisce una virgola come separatore di parametri. Se state utilizzando virgole come caratteri letterali in un parametro, racchiudete il testo tra parentesi aperte e chiuse ({}), come nel seguente esempio:
TestCM( {STRING_CONCAT(UserVar.Test1, UserVar.Test2) } )
*
Campaign supporta la sostituzione semplice dei parametri in macro personalizzate utilizzando il codice SQL raw. Ad esempio, se si imposta una casella del processo Seleziona in un diagramma di flusso contenente questa query:
exec dbms_stats.gather_table_stats(tabname=> <temptable>,ownname=> 'autodcc')
Campaign sostituirà correttamente la tabella temporanea effettiva al posto del token <temptable>. Tenere presente che sono richieste le virgolette singole per racchiudere il nome tabella.
Le seguenti tabelle descrivono come Campaign gestisce le macro personalizzate nelle query e nei campi derivati.
Macro personalizzate nelle query e nei campi derivati (processi Seleziona, Segmento e processi legati ai destinatari)
Se il valore non viene utilizzato in questo modo, Campaign gestisce un valore diverso da zero come TRUE per la selezione ID e un valore e stringa equivalenti a zero come FALSE.
In una query di SQL raw (processi Seleziona, Segmento e processi legati ai destinatari)