Instructions d'utilisation des macros personnalisées
Tenez compte des instructions suivantes lors de la création ou de l'utilisation d'une macro personnalisée :
*
*
Si une source de données a été configurée avec la propriété ENABLE_SELECT_SORT_BY = TRUE, vous devez écrire des macros personnalisées en SQL brut avec une clause ORDER BY afin de trier les enregistrements renvoyés en fonction des zones de clé d'audience dans laquelle vous travaillez. En effet, si l'ordre de tri est différent, une erreur se produit lors de l'utilisation de la macro personnalisée dans une zone dérivée d'un processus d'instantané.
*
*
Lorsqu'une macro personnalisée utilise des tables temporaires dans sa logique sous-jacente, une des tables temporaires est créée dans la base de données afin que la logique aboutisse.
Cependant, si une macro personnalisée est utilisée dans une propriété SELECT de niveau supérieur, Campaign ne peut utiliser aucun historique pour créer une table temporaire dans la base de données et la logique échoue.
Par conséquent, lorsque vous créez une macro personnalisée utilisant SQL brut, vous pouvez avoir besoin de créer deux versions de la même macro : l'une utilisant des jetons de table temporaire et l'autre non.
La macro personnalisée sans jetons de table temporaire peut être utilisée au niveau supérieur d'une arborescence (par exemple, dans la première propriété SELECT). La macro contenant des jetons de table temporaire peut être utilisée à tout autre endroit de l'arborescence où l'inclusion d'une table temporaire peut s'avérer bénéfique.
*
Par exemple, si vous utilisez une macro personnalisée basée sur SQL brut qui renvoie une valeur et que (dans un processus d'instantané, par exemple) vous générez la macro personnalisée et une autre zone à partir de la table sur laquelle se fonde la macro personnalisée, Campaign effectue une auto-jointure sur cette table. Si la table n'est pas normalisée, vous obtiendrez un produit cartésien (à savoir, le nombre d'enregistrements affiché sera supérieur au nombre attendu).
*
Lors de l'exécution, une macro personnalisée est résolue en recherchant sa définition dans la table système UA_CustomMacros (dans laquelle les définitions sont stockées), puis utilisée/exécutée.
*
Campaign prend en charge les requêtes enregistrées provenant d'éditions antérieures. Toutefois, les références à des requêtes enregistrées non uniques doivent utiliser l'ancienne syntaxe :
storedquery(<nom requête>)
*
Lors de la résolution de variables utilisateur dans des macros personnalisées, Campaign utilise la valeur en cours de la variable utilisateur au moment de la vérification de la syntaxe. Si la valeur en cours est laissée à blanc, Campaign génère une erreur.
*
*
Si vous avez l'intention d'utiliser la macro personnalisée sur plusieurs bases de données différentes, vous pouvez utiliser une expression IBM ® plutôt que SQL brut, car ce dernier peut être spécifique à une base de données particulière.
*
*
Campaign traite les virgules comme des séparateurs de paramètres. Si vous utilisez des virgules en tant que caractères littéraux dans un paramètre, placez le texte entre accolades ({}), comme indiqué dans l'exemple suivant :
TestCM( {STRING_CONCAT(UserVar.Test1, UserVar.Test2) } )
*
Campaign prend en charge la substitution simple de paramètres dans les macros personnalisées utilisant du code SQL brut. Par exemple, si vous configurez un processus Sélection dans un diagramme contenant cette requête :
exec dbms_stats.gather_table_stats(tabname=> <temptable>,ownname=> 'autodcc')
Campaign substitue la table temporaire réelle à la place du jeton <temptable>. Notez que les guillemets simples autour du nom de table sont requis.
Les tableaux suivants indiquent la façon dont Campaign traite les macros personnalisées dans les requêtes et les zones dérivées.
Macros personnalisées dans les requêtes et les zones dérivées (processus Sélection, Segment et Audience)
Si la valeur n'est pas utilisée de cette manière, Campaign traite une valeur différente de zéro comme TRUE pour la sélection d'ID, tandis qu'une valeur zéro et une chaîne sont traitées comme FALSE.
Dans une requête en SQL brut (processus Sélection, Segment et Audience)