示例: 使用 TempTable 和 OutputTempTable 标记

假设您有一个 Select1 进程,该进程要选择 10,000 名“金牌”客户(例如,Indiv.AcctType = ‘Gold’)。 然后使用原始 SQL 查询将 Select1 连接至第二个“选择”进程 (“Select2”):

Select p.CustID from Indiv p, <TempTable> where p.CustID = <TempTable>.CustID group by p.CustID having sum(p.PurchAmt) > 500

此示例选择购买总额超过 500 美元并且位于输入单元中的客户(即,具有“金牌”帐户类型的客户)。

相反,会忽略 <TempTable> 标记和联接的原始 SQL 查询:

Select p.CustID from Purchases p group by p.CustID having sum(p.PurchAmt) > 500

先计算购买表中所有客户(可能包含数百万客户)的购买总额,然后选择购买总额超过 500 美元的所有客户,而不考虑这些客户是否为“金牌”客户。

因此,为获得最佳性能,即使禁用了 in-DB 优化,存在输入单元时也请使用 <TempTable> 标记编写原始 SQL 查询。

为简单起见,此示例不使用 <OutputTempTable> 标记,但为了保持 in-DB 优化并防止从返回到 Campaign 服务器的数据库中检索受众 ID,必须在原始 SQL 查询中包括 <OutputTempTable> 标记。 例如:

Create table <OutputTempTable> as Select p.CustID from Purchases p, <TempTable> where p.CustID = <TempTable>.CustID group by p.CustID having sum(p.PurchAmt) > 500



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