Wednesday, 20 April 2011

Update Strategy Transformation



                                                                
            • Active and Connected Transformation

            Till now, we have only inserted rows in our target tables. What if we want to update, delete or reject rows coming from source based on some condition?

            Example: If Address of a CUSTOMER changes, we can update the old address or keep both old and new address. One row is for old and one for new. This way we maintain the historical data.

            Update Strategy is used with Lookup Transformation. In DWH, we create a Lookup on target table to determine whether a row already exists or not. Then we insert, update, delete or reject the source record as per business need.

            In Power Center, we set the update strategy at two different levels:

            1. Within a session
            2. Within a Mapping

            1. Update Strategy within a session:

            When we configure a session, we can instruct the IS to either treat all rows in the same way or use instructions coded into the session mapping to flag rows for different database operations.

            Session Configuration:

            Edit Session -> Properties -> Treat Source Rows as: (Insert, Update, Delete, and Data Driven). Insert is default. Specifying Operations for Individual Target Tables:

            clip_image002

            You can set the following update strategy options:

            Insert: Select this option to insert a row into a target table.

            Delete: Select this option to delete a row from a table.

            Update: We have the following options in this situation:

            •  Update as Update. Update each row flagged for update if it exists in the target table.
            •  Update as Insert. Inset each row flagged for update.
            •  Update else Insert. Update the row if it exists. Otherwise, insert it.

            Truncate table: Select this option to truncate the target table before loading data.

            2. Flagging Rows within a Mapping

            Within a mapping, we use the Update Strategy transformation to flag rows for insert, delete, update, or reject.

            Operation

            Constant

            Numeric Value

            INSERT

            DD_INSERT 0

            UPDATE

            DD_UPDATE 1

            DELETE

            DD_DELETE 2

            REJECT

            DD_REJECT 3

            Update Strategy Expressions:

            Frequently, the update strategy expression uses the IIF or DECODE function from the transformation language to test each row to see if it meets a particular condition.

            IIF( ( ENTRY_DATE > APPLY_DATE), DD_REJECT, DD_UPDATE )

            Or

            IIF( ( ENTRY_DATE > APPLY_DATE), 3, 2 )

            • The above expression is written in Properties Tab of Update Strategy T/f.
            • DD means DATA DRIVEN

            Forwarding Rejected Rows:

            We can configure the Update Strategy transformation to either pass rejected rows to the next transformation or drop them.

            Steps:

            1. Create Update Strategy Transformation
            2. Pass all ports needed to it.
            3. Set the Expression in Properties Tab.
            4. Connect to other transformations or target.

            Performance tuning:

            1. Use Update Strategy transformation as less as possible in the mapping.
            2. Do not use update strategy transformation if we just want to insert into target table, instead use direct mapping, direct filtering etc.
            3. For updating or deleting rows from the target table we can use Update Strategy transformation itself.

            No comments:

            Post a Comment