Unica Flowchart Performance
Unica Flowchart Performance
Mark Griner
Agenda
IBM Unica Campaign Fundamental Features
Table mapping Flowchart operation Custom macros
Q&A
Target Audience
Organization Roles:
Application owner Technical application lead Application administrator
Skill Sets:
OS scripting SQL Advanced IBM Unica Campaign features
Responsibilities:
Application configuration Advanced design and performance tuning Creating reusable application objects (catalogs, custom macros, etc)
Dimension tables could be joined to base tables or other dimensions A table could be mapped in multiple times in different roles
2011 IBM Corporation
Customer
CustID Name Address (PK)
Channel
ChannelID (PK) Description Dimension
Transactions
TxnID CustID ProdID TimeID ChannelID Quantity Amount Discount (PK) (FK) (FK) (FK) (FK)
Product
ProdID SKU Brand Dimension (PK)
Time
TimeID Date Dimension (PK)
Household
HH ID (PK) Address Ciy State ZIP Dimension of HH
Customer
CustID (PK) First Name Last name HH ID
Channel
ChannelID (PK) Description
Transactions
TxnID CustID ProdID TimeID ChannelID Quantity Amount Discount (PK) (FK) (FK) (FK) (FK)
Product Brand
BrandID (PK) Brand Name Description Dimension of Product ProdID (PK) SKU Brand ID Dimension of Transaction
Time
TimeID Date Dimension of Transaction (PK)
Database
Process Select Queries
Query for Derived Field Data Data Retrieval Temp Table Creation ID List Upload
Data Retrieval
Aggregation Functions
AvgOf CountOf DistinctOf MaxOf MinOf SumOf StdDevOf IndexOf MedianOf RankOf
AVG COUNT COUNT (DISTINCT) MAX MIN SUM STDDEV AVG COUNT COUNT (DISTINCT) MAX MIN SUM STDDEV AVG COUNT COUNT (DISTINCT) MAX MIN SUM STDDEV AVG COUNT COUNT (DISTINCT) MAX MIN SUM STDDEV AVG COUNT COUNT (DISTINCT) MAX MIN SUM STDDEV_POP
Analytic Functions
ROW_NUMBER ROW_NUMBER / COUNT = 0.5 RANK ROW_NUMBER PERCENTILE_DISC (0.5) DENSE_RANK ROW_NUMBER ROW_NUMBER / COUNT = 0.5 DENSE_RANK ROW_NUMBER ROW_NUMBER / COUNT = 0.5 DENSE_RANK ROW_NUMBER ROW_NUMBER / COUNT = 0.5 RANK *)
macro values
macro values
Communicate
Analyze
Collect Data
2011 IBM Corporation
Database
SQL structure (select distinct, order by) Query optimizer (by collecting statistics, creating indices) Bulk loader Temp table use thresholds and temp table pooling
Select Process
Process Configuration
Query with a single base table and dimensions Query with multiple base tables Derived fields Persisted derived fields SQL custom macros Raw SQL Using Max Cell Size
In-DB Eligibility
Yes Yes
(Full outer join)
Yes
(single SQL macro)
No Yes Yes
(with <outputtemptable> token)
No
Extract Process
Use Extract when you need records not audience keys. For example:
Pick up new transactions/responses from a touch point system Enrich, derive, aggregate data Move data from one location/format to another
Process Configuration
Extract within one data source and no derived fields Extract from one data source landing in a file or another data source Derived fields De-duping, sorting
In DB Eligibility
Yes No No No
Example of Extract
Extract Log
Creating extract table
04/06/2011 13:26:13.081 (9532) [I] [DB QUERY] [Extract2] NorthWind (thread 00001C04): CREATE TABLE UAC_EX_1_8 (CustomerID nchar(5), OrderDate datetime, UnitPrice decimal(19,4), Quantity smallint, Discount real, Amount real) [sdbtacc:2663] ... 04/06/2011 13:26:14.094 (9532) [I] [DB QUERY] [Extract2] NorthWind (thread 0000219C): INSERT INTO UAC_EX_1_8(CustomerID, OrderDate, UnitPrice, Quantity, Discount, Amount) SELECT dbo.vOrderDetails.CustomerID, dbo.vOrderDetails.OrderDate, dbo.vOrderDetails.UnitPrice, dbo.vOrderDetails.Quantity, dbo.vOrderDetails.Discount, dbo.vOrderDetails.Amount FROM dbo.vOrderDetails WHERE (dbo.vOrderDetails.OrderDate > '1998-01-01') [sdbtacc:2663]
Merge Process
Merge is always eligible for in db processing Merge(OR) is implemented as UNION of input cells temp tables Match (AND) is implemented as JOIN of input cells Exclude by default is implemented using NOT EXISTS construct Exclude could also be performed by Except and Not In queries Data source level parameters that control Exclude query structure:
UseExceptForMerge=TRUE | FALSE UseNotInForMerge=TRUE | FALSE
Segment Process
Process Configuration
Segment by Field Segment by Query Segment by Query with Mutual Exclusivity
In-DB Eligibility
No Same as Select Same as Select
Segment Process Recommendation Use process configuration eligible for in db optimization Make sure the number of segmentation cells does not exceed MaxQueryThreads setting When using queries with a single base table in a mutually exclusive Segment, control the structure of de-duping SQL with parameters:
UseExceptForMerge UseNotInForMerge
Sample Process
Not eligible for In DB Optimization For random sampling in database use Segment with SQL custom macro that invokes random numbers generator in the database
Snapshot Process
Process Configuration Options Output from a single base table and dimensions Output from multiple base tables and dimensions Output of Unica Generated Fields Output of derived fields Output de-duping In DB Eligibility Yes Yes Yes Yes (single SQL macro) No
Audience Process
Not eligible for in database optimization Convert processing to a single audience level by using basedimension table mappings and GROUPBY Campaign or SQL macros Or Replace Audience by a Snapshot to write out both audience keys for the current selection Map in Snapshot output table at a different audience level Use Select to pick the right keys from the output table
Contact History logging will extract data to Campaign Server Minimize the number of cells Be cognizant of the effect that data driven offer personalization could have on performance
2011 IBM Corporation
Response Process
Response process reads data from an action table and logs responses to Response History
Response action table data will be extracted to Campaign Server Response process will create and index temp tables in the system tables data source The complexity of queries that Response generates depends on the codes that are used for response attribution Using treatment codes is the most efficient and precise way to track responses
2011 IBM Corporation
Questions?
Thank you!