I'm new to Informatica and like to ask a question regarding infa ports. I found an example which show how to create an update flag in expression transform for updating data. The code in v_UPDATE_FLAG
port looks like this:
IIF(NOT ISNULL(PREV_ITEM_KEY)
AND
(
DECODE(BONUS_FLAG,PREV_BONUS_FLAG,1,0) = 0
OR
DECODE(DISCOUNT,PREV_DISCOUNT,1,0) = 0
OR
DECODE(PRICE,PREV_PRICE,1,0) = 0
),'TRUE','FALSE')
Can you explain what this does? What the DECODE does here??
DECODE(BONUS_FLAG,PREV_BONUS_FLAG,1,0) = 0
DECODE
syntax:
DECODE (
value
, first_search , first_result
, second_search , second_result
, ... , ...
, default
)
The value
parameter is compared with the search
parameters and, when the first match is found, a respective result
parameter is returned. If there is no match, the default
parameter is returned.
DECODE(BONUS_FLAG,PREV_BONUS_FLAG,1,0) = 0
means that the BONUS_FLAG
and PREV_BONUS_FLAG
are not equal.
The entire expression flags a row for UPDATE when PREV_ITEM_KEY
is not NULL and any of the attributes BONUS_FLAG
, DISCOUNT
or PRICE
has changed (previous value versus current value).