Directrices para la utilización de macros personalizadas
Tenga presentes las siguientes directrices cuando cree o utilice una macro personalizada:
*
*
Si un origen de datos se ha configurado con la propiedad ENABLE_SELECT_SORT_BY = TRUE, entonces deberá escribir macros personalizadas en SQL sin formato con una cláusula ORDER BY a fin de ordenar los registros devueltos por los campos de clave de audiencia por los que busca. De lo contrario, si el orden de clasificación no es el esperado, se generará un error cuando la macro personalizada se utilice en un campo derivado en un proceso Instantánea.
*
*
Cuando una macro personalizada utiliza tablas temporales en su lógica subyacente, se fuerza una tabla temporal a subir a la base de datos para que no falle la lógica.
Sin embargo, si una macro personalizada se utiliza en un SELECT de nivel superior, entonces no habrá historial que pueda utilizar Campaign para forzar la subida de una tabla temporal a la base de datos, con lo que fallará la lógica.
Por tanto, al crear una macro personalizada que utilice SQL sin formato, podría interesarle crear dos versiones de la misma macro: una que utilice tokens de la tabla temporal y otra que no los utilice.
La macro personalizada sin los tokens de la tabla temporal podrá utilizarse en el nivel superior del árbol (por ejemplo, en el primer SELECT). La que tiene tokens de tabla temporal podrá utilizarse en cualquier otra parte del árbol en la que pueda aprovecharse una tabla temporal.
*
Por ejemplo, si utiliza una macro personalizada basada en SQL sin formato que devuelve un valor y (en un proceso Instantánea, por ejemplo) se genera la salida de la macro personalizada y un campo adicional de la tabla en que se base la macro personalizada, Campaign realizará una unión automática sobre dicha tabla. Si la tabla no está normalizada, el resultado será un producto cartesiano (es decir, el número de registros mostrados será mayor de lo esperado).
*
En tiempo de ejecución, una macro personalizada se resuelve buscando su definición en la tabla del sistema UA_CustomMacros (donde se almacenan las definiciones) y luego se utiliza/ejecuta.
*
Campaign soporta consultas de releases anteriores. Sin embargo, las referencias a consultas almacenadas no exclusivas deben utilizar la sintaxis antigua.
storedquery(<nombre consulta>)
*
Cuando se resuelven las variables de usuario en las macros personalizadas, Campaign utiliza el valor actual de la variable de usuario al comprobar la sintaxis. Si el valor actual se ha dejado en blanco, Campaign generará un error.
*
*
Si tiene la intención de utilizar una macro personalizada en varias bases de datos, podría interesarle utilizar una expresión IBM® en vez de SQL sin formato, ya que el SQL sin formato puede ser específico de una base de datos concreta.
*
*
Campaign trata las comas como separador de parámetro. Si está utilizando comas como caracteres litereales en un parámetro, encierre el texto en llaves ({}) como en el siguiente ejemplo:
TestCM( {STRING_CONCAT(VarUsu.Test1, VarUsu.Test2) } )
*
Campaign soporta la sustitución simple de parámetros en macros personalizadas que utilicen SQL sin formato. Por ejemplo si configura un cuadro de proceso Selección en un diagrama de flujo que contenga esta consulta:
exec dbms_stats.gather_table_stats(tabname=> <temptable>,ownname=> 'autodcc')
Campaign sustituiría satisfactoriamente la tabla temporal real en el lugar del token <temptable>. Tenga en cuenta que las comillas simples alrededor del nombre de tabla son obligatorias.
Las siguientes tablas muestran cómo trata Campaign las macros personalizadas en consultas y campos derivados.
Macros personalizadas en consultas y campos derivados (procesos Selección, Segmentación y Audiencia)
Si el valor no se utiliza de esa forma, Campaign tratará un valor distinto de cero como TRUE en la selección de ID, y una cadena y un valor de cero como FALSE.
En una consulta en SQL sin formato (procesos Selección, Segmentación y Audiencia)