Translate

Thursday 14 August 2014

Shahed

OBIA 11.1.1.7.1 Table Maintenance Customisation


OBIA ODI Default Behaviour on Table Maintenance


 

The table Maintenance procedure only currently works under the Oracle BI Applications model Folder

The below solution involves altering a procedure / generating a scenario / Duplicating and Altering an IKM

Oracle BI Applications
Dimension_Stage = Truncate after load in IKM
Fact_Stage = Truncate after Load in IKM

 

The truncate is handled by the Table Maintenance Program in ODI this is called from the Integration Knowledge Modules…

To alter the Table Maintenance program so it supports other models  folders do the following

Navigate to: 
1.       Bi Apps Project à Components à DW à Table Maintenance
2.       Duplicate TABLE_MAINT_PROC Procedure

3.       Edit the New TABLE_MAIN_PROC Procedure and remove the following piece of code

||td.mTableModelCode.equals("ORACLE_BI_APPLICATIONS")

This will now enable the TABLE_MAINT_PROC to work on any Model



I wanted to create a model called RX Oracle BI Applications not linked to BI Applications so that I can keep the custom models separate from the seeded models. Remember you still need to name your folders Dimension_Stage .. same as seeded etc

4.       Duplicate the Existing Package Exec TABLE_MAINT_PROC and refer the procedure step to the new duplicated procedure above.

5.       Generate a new scenario
6.       Duplicate a seeded IKM

Left Click to Duplicate an object

 
7.       Edit the duplicated IKM

Under Details then step “Table Maintenance Before”

Alter the python code – Update to new Scenario name generated above with new Procedure to support a model apart from Oracle Applications.

OdiStartScen "-SCEN_NAME=RX_EXEC_TABLE_MAINT_PROC" "-SCEN_VERSION=001"


That’s it test your new interfaces using the New Knowledge Module. Import the Knowledge module into your project.

 

---------- Reference Code in TABLE_MAINT_PROC

   if (td.mTableModelCode.equals("BIAPPS")||td.mTableModelCode.equals("BIAPPS_DATALINEAGE")||td.mTableModelCode.equals("ORACLE_BI_APPLICATIONS")) {

                optOverride = odiRef.getFlexFieldValue(Integer.toString(td.mTableId), "2400", "OBI_TAB_MAINT_BEHAVIOR"); //FlexField for Over-riding the default Sub Model Behaviour

   } else { optOverride = "NEVER_SKIP_ALLSTATS"; // For non-BIAPPS model do nothing

   }

---------- I Have included the snippet that requires changing  in earlier steps.

 

Note: only a member of this blog may post a comment.



About Authors

Shahed Munir

Krishna Udathu

Shahed and Krishna are Oracle / Big Data Experts