I am bit confused about static and dynamic flow control.
As per my understanding static control rules are applied after data load
and flow control is applied before data load in target table.
I have created 2 tables source: EMP1(empno number(4)) target EMP2(empno number(4) primary key) and created one ODI constraint in EMP2 that empno>0
data in EMP1 are, -1,1,2,3,3,null.
and used Oracle incremental upload , with update set as 'FALSE'(as there is only 1 column in table) and flow_control & static_control true
after executing i found 3 rows in table 1. for constraint violation (-1)
2. for primary key violation (3)
3. for not null violation (null)
but all these error records came in flow_control ,ODI_ERR_TYPE is 'F'.
Please explain me ,which type of error can be catched in static_control, in given example.
Static control can be used to check the integrity of the data in a table before or after an Interface is executed. Static control will check the existing data in the physical table against the logical constraints added to the ODI Datastore. For example, if your Datastore does not allow nulls in column EMPLOYEE_ID, but the physical table does, you can run static control check against the Datastore to check for any null values prior to executing the Interface.
Flow control will check the integrity of the data during execution of the Interface. Most often Flow control is necessary when executing ETL - joining multiple tables to load a single target table. For example, if an outer join between EMPLOYEE and DEPARTMENT fails because DEPARTMENT was not updated correctly, flow control will capture an error if DEPARTMENT_ID is not nullable in the target Datastore, prior to the null reaching the physical table.
The documentation can explain it further: http://docs.oracle.com/cd/E17904_01/integrate.1111/e12641/quality.htm