Update Strategy Transformation
When you
design a data warehouse, you need to decide what type of information to store in
targets. As part of the target table design, you need to determine whether to
maintain all the historic data or just the most recent changes.
T_CUSTOMERS, that contains customer data. When a customer address changes, you
may want to save the original address in the table instead of updating that
portion of the customer row.
Transformation type:
Active
Connected
Update Strategy Expressions
IIF( ( ENTRY_DATE > APPLY_DATE), DD_REJECT, DD_UPDATE )
The model you
choose determines how you handle changes to existing rows. In PowerCenter, you
set the update strategy at two different levels:
|
Within a session. When you configure a session, you can
instruct the Integration Service to either treat all rows in the same way (for
example, treat all rows as inserts), or use instructions coded into the session
mapping to flag rows for different database operations. |
|
Within a mapping. Within a mapping, you use the Update
Strategy transformation to flag rows for insert, delete, update, or reject.
|
Note: You can also use the Custom
transformation to flag rows for insert, delete, update, or reject.
Setting the Update Strategy
To define an
update strategy, complete the following steps:
1.
|
To control how rows are flagged for insert, update, delete, or reject within
a mapping, add an Update Strategy transformation to the mapping. Update Strategy
transformations are essential if you want to flag rows destined for the same
target for different database operations, or if you want to reject
rows. |
2.
|
Define how to flag rows when you configure a session. You can flag all rows
for insert, delete, or update, or you can select the data driven option, where
the Integration Service follows instructions coded into Update Strategy
transformations within the session mapping. |
3.
|
Define insert, update, and delete options for each target when you configure
a session. On a target-by-target basis, you can allow or disallow inserts and
deletes, and you can choose three different ways to handle updates.
Flagging Rows Within a Mapping
For the greatest
degree of control over the update strategy, you add Update Strategy
transformations to a mapping. The most important feature of this transformation
is its update strategy expression, used to flag individual rows for insert,
delete, update, or reject.
The following
table lists the constants for each database operation and their numeric
equivalent:
Operation |
Constant |
Numeric Value |
Insert |
DD_INSERT |
0 |
Update |
DD_UPDATE |
1 |
Delete |
DD_DELETE |
2 |
Reject |
DD_REJECT |
3 |
The Integration
Service treats any other value as an insert.
Forwarding Rejected Rows
You can
configure the Update Strategy transformation to either pass rejected rows to the
next transformation or drop them. By default, the Integration Service forwards
rejected rows to the next transformation. The Integration Service flags the rows
for reject and writes them to the session reject file. If you do not select
Forward Rejected Rows, the Integration Service drops rejected rows and writes
them to the session log file.
If you enable
row error handling, the Integration Service writes the rejected rows and the
dropped rows to the row error logs. It does not generate a reject file. If you
want to write the dropped rows to the session log in addition to the row error
logs, you can enable verbose data tracing.
Aggregator and Update Strategy Transformations
When you connect Aggregator and Update Strategy transformations as part of the same pipeline, you
have the following options:
Position the Aggregator before the Update Strategy transformation. In this case, you perform the aggregate calculation, and then use the Update Strategy transformation to flag rows that contain the results of this calculation for insert, delete, or update.
Position the Aggregator after the Update Strategy transformation. Here, you flag rows for insert, delete, update, or reject before you perform the aggregate calculation. How you flag a particular row determines how the Aggregator transformation treats any values in that row used in the calculation. For example, if you flag a row for delete and then later use the row to calculate the sum, the Integration Service subtracts the value appearing in this row. If the row had been flagged for insert, the Integration Service would add its value to the sum.
When you
configure a session, you have several options for handling database operations,
including updates.
Specifying an Operation for All Rows
When you
configure a session, you can select a single database operation for all rows
using the Treat Source Rows As setting.
The following
table displays the options for the Treat Source Rows As setting:
Setting |
Description |
Insert |
Treat all rows as inserts. |
Delete |
Treat all rows as deletes. For each row, if the Integration Service finds a
corresponding row in the target table (based on the primary key value), the
Integration Service deletes it. Note that the primary key constraint must exist
in the target definition in the repository. |
Update |
Treat all rows as updates. For each row, the Integration Service looks for a
matching primary key value in the target table. If it exists, the Integration
Service updates the row. The primary key constraint must exist in the target
definition. |
Data Driven |
Integration Service follows instructions coded into Update Strategy and
Custom transformations within the session mapping to determine how to flag rows
for insert, delete, update, or reject.
If the mapping for the session contains an Update Strategy transformation,
this field is marked Data Driven by default.
If you do not choose Data Driven when a mapping contains an Update Strategy
or Custom transformation, the Workflow Manager displays a warning. When you run
the session, the Integration Service does not follow instructions in the Update
Strategy or Custom transformation in the mapping to determine how to flag
rows. |
|
Comments
Post a Comment