使用自定义宏的指导原则

在创建或使用自定义宏时,请记住以下指导原则:

*
*
如果已使用属性 ENABLE_SELECT_SORT_BY = TRUE 配置数据源,则 必须“ORDER BY”子句编写原始 SQL 自定义宏,以便按所使用的受众级别的受众键字段对返回的记录排序。 否则,如果排序顺序与预期不符,则在“快照”进程的派生字段中使用自定义宏时将生成错误。
*
*
当自定义宏在其基础逻辑中使用临时表时,会将一个临时表向上强制用于数据库,以使该逻辑不会失败。
但如果在顶级 SELECT 中使用自定义宏,则没有历史记录可供 Campaign 用来将临时表向上强制用于数据库,逻辑将失败。
因此,在创建使用原始 SQL 的自定义宏时,可能需要创建同一个自定义宏的两个版本 - 一个使用临时表标记,另一个不使用临时表标记。
没有临时表标记的自定义宏可在树顶部使用(例如,在第一个 SELECT 中)。 当可能有要利用的临时表时,可在树中的其他任何位置使用具有临时表标记的自定义宏。
*
例如,如果基于返回值的原始 SQL 使用自定义宏并且(例如,在“快照”进程中)从该自定义宏所基于的表中输出自定义宏和其他字段,Campaign 将对该表执行自行联接。 如果表是非规范化的,则会生成一个 Cartesian 产品(即,显示的记录数大于预期数量)。
*
执行时,会通过在 UA_CustomMacros 系统表(其中存储定义)中查找自定义宏的定义来解析自定义宏,然后再使用/执行该自定义宏。
*
Campaign 支持来自早期版本的存储查询。 但是,对非唯一存储查询的引用必须使用旧语法:
storedquery(<查询名称>)
*
*
*
*
*
TestCM( {STRING_CONCAT(UserVar.Test1, UserVar.Test2) } )

下表详细介绍了 Campaign 如何处理查询和派生字段中的自定义宏。

查询和派生字段中的自定义宏(“选择”、“分段”和“受众”进程)

作为单独查询来运行。 将 ID 列表与其他结果合并。

如果自定义宏包含其他自定义宏和原始 SQL,将先解析和执行自定义宏,然后执行原始 SQL。

预期将在表达式中使用返回值或将其用作比较。

如果不以此方式使用该值,则 Campaign 会在进行 ID 选择时将非零值视为 TRUE,将零值和字符串视为 FALSE。

解析表达式并执行语法检查。 支持每个表使用一个查询,并匹配/合并 ID。

在原始 SQL 查询中(“选择”、“分段”和“受众”进程)

解析自定义宏,然后执行查询。

解析表达式,但不执行语法检查。 如果表达式不正确,则在执行时由数据库服务器进行检测。



IBM Unica Campaign
 
8.5.0
For more information, see our support and community site: Customer Central