The following are restrictions for using gate conditions:
-
A gate condition used with the data enhancement method Copy does not convert an exclamation point (!) to NOT.
-
A gate condition used with the data enhancement method Copy does not support the conversion of (%) modular operator.
-
When the gate condition routing is based on an expression or system variable, which does not contain a source column as part of the expression, the target scoping change is not maintained.
The following example uses:
-
Gate condition to route source data to one or more targets based on the value of the source data
-
Transaction Username system variable to route the target data.
COLUM_1 == ‘Northeast’ maps to Boston
COLUM_1 == ‘Midwest’ maps to Chicago
tranusername( ) == 'qabob' maps to QA.DB
tranusername( ) == 'devmike' maps to DEV.DB
Source updates with the COLUM_1 value ‘Northeast’ are sent to the Boston target mapping and updates with the value ‘Midwest’ are sent to the Chicago target mapping. If a source update operation is executed which changes COLUM_1 from ‘Midwest’ to ‘Northeast’, a new row is inserted at the Boston target and the old row is deleted from Chicago.
When user ‘qabob’ inserts a row, it is sent to the QA.DB target. When user devmike’ inserts a row, it is sent to the DEV.DB target. However, if user ‘devmike’, tries to update a row that was previously inserted by ‘qabob’, the update is not converted to insert on DEV.DB and a DELETE operation is not sent to QA.DB for this row.
The update operation sent to Chicago receive an error because the row does not exist at Chicago. In order to handle this error, Forgiveness mode or full collision detection and resolution must be used. Target scoping changes such as this cannot be maintained because there is no previous old value of the row to use when deciding if the row was routed to a new target.
When system variables are used to route source data to targets in a gate condition, any changes in target scoping are not maintained. In order to maintain target scoping changes, the old value of the gate condition expression must be available to determine if the routing changed. When system variables are used for the gate condition expression, there is no old value information available to determine if there was a routing change. Target scoping changes can only be maintained when the gate condition routing is done using a column from the source table.