Saturday, December 12, 2015

PIVOT in ODI 12c

How to Implement PIVOT component in ODI 12c?

Scenario:
To avoid redundant data

Scripts:

CREATE TABLE STUDENT_LOC(
SNAME VARCHAR2(30),
PREFERENCE VARCHAR2(20),
LOCATION VARCHAR2(20));

INSERT INTO STUDENT_LOC VALUES('TRINESH','LOCATION1','HYDERABAD');
INSERT INTO STUDENT_LOC VALUES('TRINESH','LOCATION2','BANGALORE');
INSERT INTO STUDENT_LOC VALUES('SHANTHI','LOCATION1','HYDERABAD');
INSERT INTO STUDENT_LOC VALUES('SHANTHI','LOCATION2','BANGALORE');
INSERT INTO STUDENT_LOC VALUES('BAPI','LOCATION1','HYDERABAD');
INSERT INTO STUDENT_LOC VALUES('BAPI','LOCATION2','USA');
INSERT INTO STUDENT_LOC VALUES('RAJU','LOCATION1','USA');
INSERT INTO STUDENT_LOC VALUES('RAJU','LOCATION2','BANGALORE');
INSERT INTO STUDENT_LOC VALUES('DEEPAK','LOCATION1','DUBAI');
INSERT INTO STUDENT_LOC VALUES('DEEPAK','LOCATION2','HYDERABAD');
COMMIT;

CREATE TABLE STUDENT_LOCATION (
SNAME VARCHAR2(30),
LOCATION1 VARCHAR2(20),
LOCATION2 VARCHAR2(20));
/

Steps to Implement:
1.     Create new Mapping
2.     Drag and drop source datastore(STUDENT_LOC) and target datastore from model(STUDENT_LOCATION )
3.     Drag and drop Pivot component from component palette into mapping editor
4.     Connect output connector of PIVOT to input connector of Target datastore
It will pop up as below:



Enable checkbox “Create Attributes On Source” and “Auto Map” and click on OK.
5.     Connect output connector of source datastore to input connector of Pivot Component
6.     Disable checkbox “Create Attributes on Target”
7.     Select Pivot component and go to property inspector
8.     For Sname under expression select “Sname” from source datastore
Row Locator: Select “Preference” Column from source Datastore
Click ok “+” symbol to create ROW Locator values
“LOCATION1”
“LOCATION2”
Under “Matching row” for LOCATION1 column in pivot component select “LOCATION1” and for expression select “Location” Column
Under “Matching row” for LOCATION2 column in pivot component select “LOCATION2” and for expression select “Location” Column
It looks as below:
 
9.     Select appropriate knowledge module in physical tab by selecting target datastore (IKM Oracle insert.Global by default it will comes, you can leave as it)
10. Execute Mapping
Output & Flow:



2 comments:

  1. Hi, Is it possible to have mulitple columns as row locator. My req is is have year, location, item, qty
    AND would like to pivot as Year, Location, Item1, Qty1, Item2, Qty2, Item3, QTY3.

    ReplyDelete
  2. Hi,
    Sorry for delay in response.
    There is no need of adding one more row locator for your scenario. In the row locator mention all three items (I mean hardcode it). For item1, select correspondent matching column and select same matching column and map correspondent qty from source.

    Please let me know is it resolve your issue.

    ReplyDelete