SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Gürcan ORHAN
Enterprise Data Warehouse Architect
Ekol Logistics Corp.
30th May 2017
Best Practices with
Oracle Data Integrator (ODI): Flexibility
http://gurcanorhan.wordpress.com
@gurcan_orhan
http://tr.linkedin.com/in/gurcanorhan
Who Am I ?
+20 years of IT experience.
+14 years of DWH experience.
+10 years of Oracle Data Integrator experience.
+8 years of Oracle Warehouse Builder experience.
Sybase Power Designer, ERwin Data Modeler, SDDM
OBIEE, Cognos, Microstrategy, Business Objects, Qlikview, Tableau
IBM Data Stage, SAP Data Services, Informatica, etc…
Oracle Excellence Awards - Technologist of the Year 2011 :
Enterprise Architect
DWH & BI Chair : TROUG (Turkish Oracle User Group)
Published Customer Snapshot for NODI @Oracle.com
Published videos about ODI @Oracle.com (Oracle Media Network)
Published OTN Podcasts about
“Data Warehousing and ODI”
“ODI and the Evolution of Data Integration”
3 different “2MTT”s
Articles in OTech Magazine, SearchSoftwareQuality.com
Annual panelist for ODTUG “Ask the Experts Panel : ODI”
Presenter in OOW since 2010 (7 times in a row ⭐ )
Presenter in many OUG conferences in globe
Presenter in various universities in Turkey
23RD MAY 2017 / #OTNEMEATOUR
Ekol Germany
Warehousing
Solutions
begin with the
Kardelen Facility
1996 2003 2010 2012 2014 2016
201520132011200820021990
Acquire STS Int.
Transport
Ekol Bosnia
Ekol France
Ekol Greece
Ekol Ukraine
Ekol Spain
Ekol Bulgaria
Ekol Czech Rep.
Ekol Iran
Ekol PolandEkol Italy
Ekol Romania
Ekol HungaryAcquire
Unok/Unatsan
Rainbow
Replaced by
Quadro
(software)
Intermodal
operations Ro-Ro
operations
Established
Ekol Milestones
USA
Ekol Locations
Currentcountries
15 80
locations
2017
23
countries
92
locations
2018
31
countries
104
locations
2019
42
countries
122
locations
CN
Overview
30 MAY 2017 / #OTNEMEATOUR
My Definition of ODI
6
30 MAY 2017 / #OTNEMEATOUR
Make sure you have;
 Backup your repository
 Backup your Knowledge Modules (export, duplicate)
 Backup your necessary ODI development
Before trying something in your environment
Remember to create a zzz_Test folder and test before apply
Attention …!!!
7
AGENDA
30 MAY 2017 / #OTNEMEATOUR
select count(1) from msdb.dbo.sysjobhistory
where step_id = 0
and run_status = 1
and job_id = (select job_id from msdb.dbo.sysjobs
where name = 'My_BI_Job')
and run_date = CAST(SUBSTRING('#V_SYSDATE',1,8) as integer)
Use A Variable Within A Variable
9
30 MAY 2017 / #OTNEMEATOUR
SELECT *
FROM odiwd.snp_session sess,
odiwd.snp_step_log step,
odiwd.snp_sess_task sess_task,
odiwd.snp_exp_txt exp_txt
WHERE sess.sess_no = step.sess_no
AND sess.sess_no = sess_task.sess_no
AND step.nno = sess_task.nno
AND step.i_txt_step_mess = exp_txt.i_txt
AND step.step_status = 'E'
AND exp_txt.txt_ord = 0
AND sess.sess_no = <%=odiRef.getSession("SESS_NO")%>
SELECT NVL(MAX(ALARM_ID), 0) FROM
<%=odiRef.getSchemaName("MYDB.DWH", "D")%>.TABLE_NAME
SELECT NVL(MAX(ALARM_ID), 0) FROM DWH.TABLE_NAME
Use A odiRef Function In A Variable
10
AGENDA
30 MAY 2017 / #OTNEMEATOUR
Oracle’s most powerful querying attribute when in right hands.
An Oracle hint is an optimizer directive that is embedded into
an SQL statement to suggest to Oracle how the statement
should be executed.
http://psoug.org/reference/hints.html or just google «Oracle hints»
Most common hints in a DWH system;
 APPEND
 PARALLEL
 USE_HASH
 USE_MERGE
 FULL
 INDEX
 ORDERED
 MERGE
HINTS in Oracle
12
30 MAY 2017 / #OTNEMEATOUR
KM’s… How To Apply Static Hints
13
30 MAY 2017 / #OTNEMEATOUR
Step 1 : Create OPTIONS for KM’s
KM’s… How To Apply semi-Dynamic Hints
14
30 MAY 2017 / #OTNEMEATOUR
Step 1 : Create OPTIONS for KM’s
KM’s… How To Apply semi-Dynamic Hints
15
30 MAY 2017 / #OTNEMEATOUR
Step 2 : Insert this OPTIONS into KM’s
insert <%=odiRef.getOption("INSERT_HINT")%>
into <%=snpRef.getTable("L","TARG_NAME","A")%>
select <%=odiRef.getOption("SELECT_HINT")%>
<%=snpRef.getPop("DISTINCT_ROWS")%>
<%=snpRef.getColList("", "[EXPRESSION]t[ALIAS_SEP]
[CX_COL_NAME]", ",nt", "", "")%>
from <%=snpRef.getFrom()%>
INSERT /*+ APPEND PARALLEL(t3, 8) */
INTO t3
SELECT /*+ parallel(t1) parallel(t2)
ordered use_hash(t2) index(t1 t1_abc)
index(t2 t2_abc) */ COUNT(*)
FROM t1, t2
WHERE t1.col1 = t2.col1;
KM’s… How To Apply semi-Dynamic Hints
16
30 MAY 2017 / #OTNEMEATOUR
KM’s… How To Apply Variabled Dynamic Hints
17
Step 1 : Create table INTEFACE_HINTS to read from database
CREATE TABLE ODI.INTERFACE_HINTS
(
INTERFACE_NAME VARCHAR2(255 BYTE),
INTERFACE_KM VARCHAR2(255 BYTE),
KM_STEP_NAME VARCHAR2(255 BYTE),
KM_STEP_ORDER INTEGER,
STEP_HINT_NAME VARCHAR2(255 BYTE),
STEP_HINT_ORDER INTEGER,
STEP_HINT_VALUE VARCHAR2(4000 BYTE)
)
TABLESPACE TBS_ODI
NOLOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
30 MAY 2017 / #OTNEMEATOUR
KM’s… How To Apply Variabled Dynamic Hints
18
Step 2 : Add 1st command (Get Hints) in Knowledge Module
30 MAY 2017 / #OTNEMEATOUR
KM’s… How To Apply Variabled Dynamic Hints
19
Step 2 : Add 1st command (Get Hints) in Knowledge Module
30 MAY 2017 / #OTNEMEATOUR
KM’s… How To Apply Variabled Dynamic Hints
20
Step 3 : Use Hints in SQL statements in Knowledge Module
30 MAY 2017 / #OTNEMEATOUR
KM’s… How To Apply Variabled Dynamic Hints
21
Output of step “Get Hints” in ODI
30 MAY 2017 / #OTNEMEATOUR
KM’s… How To Apply Variabled Dynamic Hints
22
Output of “SQL Statements” in ODI
AGENDA
30 MAY 2017 / #OTNEMEATOUR
Right Click ➜ Insert Datatype
Adding Datatypes
24
30 MAY 2017 / #OTNEMEATOUR
Adding Datatypes
25
Converted To, Converted From
AGENDA
30 MAY 2017 / #OTNEMEATOUR
Topology Manager ➜ Languages ➜ SQL ➜ Aggregate (or other)
Adding Database Related Functions
27
30 MAY 2017 / #OTNEMEATOUR
Adding User Functions
28
User Functions ➜ Right Click ➜ New User Function AVG
CORR
COUNT
COVAR_POP
COVAR_SAMP
CUME_DIST
DENSE_RANK
FIRST
LAST
LISTAGG,
MAX
MIN
PERCENT_RANK
PERCENTILE_CONT
PERCENTILE_DISC
RANK
STDDEV
STDDEV_POP
STDDEV_SAMP
SUM
VAR_POP
VAR_SAMP
VARIANCE
30 MAY 2017 / #OTNEMEATOUR
Adding User Functions
29
User Functions ➜ Impact Analysis
AGENDA
30 MAY 2017 / #OTNEMEATOUR
Running in «Asynchronous Mode»
Error Handler
Max. Number of Failed Child
Sessions = 1
Mail body
(refresh variable) Send mail
Raise Error
(error refresh variable)
Handling Alerts
31
30 MAY 2017 / #OTNEMEATOUR
Send e-mail for each script, attach the appropriate file.
 Mail Server : #V_MAIL_SERVER_IP
 From : This is static, user that you are sending mail.
 TO : #V_ERROR_MAIL_TO (need to be refreshed in the beginning of
your ETL or current package)
 CC : #V_ERROR_MAIL_CC (need to be refreshed in the beginning of
your ETL or current package)
 BCC : #V_ERROR_MAIL_BCC (need to be refreshed in the beginning of
your ETL or current package)
 Subject : There are #V_MY_ERROR_COUNT errors exist in your
system (Error Code = #V_MY_ERROR_CODE)
 Attachment : /data/my_errors/MY_Error_#V_MY_ERROR_CODE.txt
(will represent as /data/my_errors/MY_Error_1.txt initially, then will attach
regarding file in the loop, every step will attach its own script file)
 Message Body : #V_MY_ERROR_DESC
Handling - in ETL - Data Quality
32
AGENDA
30 MAY 2017 / #OTNEMEATOUR
Step 1 : Operating system folders and read file names
Step 2 : IKM Knowledge Module (edited to fit for purpose)
Step 4 : ODI Procedure to rename files for external table usage
Step 3 : ETL_FILE LOG (database table)
Step 6 : ODI Procedure to Get File List of operating system
Step 7 : a single ODI Interface (loading and transforming)
Step 8 : Some ODI Variables
Step 9 : ODI Package for running everything in right order
Step 5 : ODI Procedures to finish working with files
File2Table… Summary (F2T)
34
30 MAY 2017 / #OTNEMEATOUR
Illustration for files received from «web_logs»
F2T… Prepare Folders (Step 1)
35
30 MAY 2017 / #OTNEMEATOUR
 Rename as : IKM SQL Control Append (Direct Load,HINT)
 Copy current KM : IKM SQL Control Append
 Add New Row : «Parallel DML», Transaction 0, No Commit
alter session enable parallel dml
 Add Options : «SELECT HINT», «INSERT HINT»
 Add New fixed Row : «Commit transaction» to Transaction 0,
Commit
/* commit */
 Modify : «Insert new rows» to Transaction 0, No Commit
File2Table… Prepare IKM (Step 2)
36
30 MAY 2017 / #OTNEMEATOUR
INSERT /*+ APPEND PARALLEL(4) */
INTO ODIDB.MY_TARGET_TABLE
(
MY_TARGET_COLUMN_1,
MY_TARGET_COLUMN_2,
MY_TARGET_COLUMN_3
)
SELECT
/*+ PARALLEL(MY_SOURCE_TABLE,4) FULL(MY_SOURCE_TABLE) */
MY_SOURCE_TABLE.MY_SOURCE_COLUMN_1,
MY_SOURCE_TABLE.MY_SOURCE_COLUMN_2,
MY_SOURCE_TABLE.MY_SOURCE_COLUMN_3
FROM ODISTG.I$MY_TARGET_TABLE MY_SOURCE_TABLE
WHERE MY_SOURCE_TABLE.MY_SOURCE_COLUMN_4 = ‘USA’
AND MY_SOURCE_TABLE.MY_SOURCE_COLUMN_5 = ‘New York’
F2T… Prepare IKM (Step 2)
37
30 MAY 2017 / #OTNEMEATOUR
COLUMN NAME PK NULL? DATA TYPE DEF COMMENT
FILE_ID 1 N NUMBER (10) The unique identification number of file.
FILE_NAME N VARCHAR2 (50 Byte) The name of file to be processed.
FILE_GROUP N VARCHAR2 (20 Byte)
Source system name or group with the
same template.
FILE_COPIED_FLAG
Y NUMBER (1) 0
0 : not copied,
1 : copied successfully,
2 : error in copy.
FILE_COPY_DATE Y DATE Date of file copied.
FILE_READ_FLAG
Y NUMBER (1) 0
0:not read, 1:read successfully, 2:error
in read.
FILE_READ_DATE Y DATE Date of file read.
FILE_PROCESSED_FLAG Y NUMBER (1) 0 Date of file processed.
FILE_PROCESSED_DATE
Y DATE
0:not processed, 1:processed
successfully, 2:error in process.
Create table ETL_FILE_LOG
F2T… Prepare log Table (Step 3)
38
30 MAY 2017 / #OTNEMEATOUR
 Create external table «STG.INVOICE_LOG»
 Create ODI Procedure «Rename File»
mv
/data/invoice_logs/#FILE_NAME/data/invoice_logs
/my_external_table.ext
rm /data/invoice_logs/my_external_table.ext
 Step 1 ; delete previous file
 Step 2 ; rename next file
F2T… Rename File ODI Procedure (Step 4)
39
30 MAY 2017 / #OTNEMEATOUR
 Create ODI Procedure – «UPDATE PROCESSED FILE»
UPDATE ODI.ETL_FILE_LOG
SET FILE_PROCESSED_FLAG = 1, FILE_PROCESSED_DATE = SYSDATE
WHERE FILE_ID = #FILE_ID
 Step 1 ; update ETL_FILE_LOG (Processed)
 Step 2 ; delete processed data file
rm /data/invoice_logs/my_external_table.ext
 Step 3 ; delete processed log file
rm /data/invoice_logs/my_external_table.log
F2T… Update Processed File (Step 5)
40
30 MAY 2017 / #OTNEMEATOUR
import java.lang as lang
import java.sql as sql
import snpsftp
import java.lang.String
import os
import java.io.File as File
#db connection
driverSrc = ‘oracle.jdbc.driver.OracleDriver’
lang.Class.forName(driverSrc)
#Production Environment
urlSrc = ‘jdbc:oracle:thin:@<host>:<port>:<sid>’
#Development Environment
#urlSrc = ‘jdbc:oracle:thin:@<host>:<port>:<sid>’
userSrc = ‘ODI’
passwdSrc = ‘ODI’
ConSrc = sql.DriverManager.getConnection(urlSrc, userSrc, passwdSrc);
readDBLink = ConSrc.createStatement()
syslist = os.listdir(‘<%=odiRef.getOption( “SOURCE_DIRECTORY” )%>’)
for sys in syslist:
str = java.lang.String(sys)
if str.length() > 8:
sqlDBLink = “select * from ODI.ETL_FILE_LOG where FILE_NAME = ‘” + sys + “‘”
rqteDBLink = readDBLink.executeQuery(sqlDBLink)
if not rqteDBLink.next():
sqlDBLink = “insert into ODI.ETL_FILE_LOG (FILE_ID, FILE_NAME, FILE_GROUP,
FILE_SUB_GROUP, FILE_READ_FLAG, FILE_READ_DATE) values (ODI.SEQ_FILE_ID.NEXTVAL, ‘” +
sys + “‘, ‘<source_system_name>’, ‘<file_type>’, ’1′, SYSDATE)”
rqteDBLink = readDBLink.execute(sqlDBLink)
ConSrc.close()
 Create ODI Procedure Jyhton Technology – «GetFileList»
F2T… GetFileList from OS (Step 6)
41
30 MAY 2017 / #OTNEMEATOUR
 Create ODI Interface (external table  db table)
 Source : STG.INVOICE_LOG
(based on external table  my_external_table.ext)
 Target : DWH.INVOICE_LOGS
 KM : IKM SQL Control Append (Direct Load, HINT)
Truncate : No
Select Hint : /*+ PARALLEL(4) */
Insert Hint : /*+ APPEND PARALLEL(4) NOLOGGING */
F2T… ODI Interface (Step 7)
42
30 MAY 2017 / #OTNEMEATOUR
 Create ODI Variable to refresh – «File_ID»
 Create ODI Variable to refresh – «File_Name»
SELECT NVL(MIN(FILE_ID), 0) FROM ODI.ETL_FILE_LOG
WHERE FILE_READ_FLAG = 1
AND FILE_PROCESSED_FLAG = 0
AND FILE_GROUP = 'INVOICE_LOGS'
SELECT FILE_NAME FROM ODI.ETL_FILE_LOG
WHERE FILE_ID = #FILE_ID
F2T… Prepare ODI Variables (Step 8)
43
30 MAY 2017 / #OTNEMEATOUR
Get_File_List
ODI Procedure
FILE_ID
Refresh Variable
FILE_ID
Evaluate Variable
FILE_NAME
Refresh Variable
RENAME_FILE
ODI Procedure
INTERFACE
From:Ext_Table
To:DB.Table
UPDATE_PROCESSED
ODI Procedure
UPDATE_REJECTED
ODI Procedure
Determine_Error_Desc
ODI Procedure
ODISendMail
Rejected File
F2T… Time to Pack-UP (Step 9)
44
30 MAY 2017 / #OTNEMEATOUR
http://gurcanorhan.wordpress.com
@gurcan_orhan
http://tr.linkedin.com/in/gurcanorhan
…Final Words…
45

Weitere ähnliche Inhalte

Was ist angesagt?

Odi 12c-getting-started-guide-2032250
Odi 12c-getting-started-guide-2032250Odi 12c-getting-started-guide-2032250
Odi 12c-getting-started-guide-2032250Udaykumar Sarana
 
Oracle sql high performance tuning
Oracle sql high performance tuningOracle sql high performance tuning
Oracle sql high performance tuningGuy Harrison
 
Azure+Databricks+Course+Slide+Deck+V4.pdf
Azure+Databricks+Course+Slide+Deck+V4.pdfAzure+Databricks+Course+Slide+Deck+V4.pdf
Azure+Databricks+Course+Slide+Deck+V4.pdfChitresh Kaushik
 
Overview Profitability and Cost Management Cloud Services
Overview Profitability and Cost Management Cloud Services Overview Profitability and Cost Management Cloud Services
Overview Profitability and Cost Management Cloud Services Alithya
 
Oracle backup and recovery
Oracle backup and recoveryOracle backup and recovery
Oracle backup and recoveryYogiji Creations
 
Fusion Middleware Oracle Data Integrator
Fusion Middleware Oracle Data IntegratorFusion Middleware Oracle Data Integrator
Fusion Middleware Oracle Data IntegratorMark Rabne
 
Oracle statistics by example
Oracle statistics by exampleOracle statistics by example
Oracle statistics by exampleMauro Pagano
 
Oracle DB Performance Tuning Tips
Oracle DB Performance Tuning TipsOracle DB Performance Tuning Tips
Oracle DB Performance Tuning TipsAsanka Dilruk
 
Oracle R12 EBS Performance Tuning
Oracle R12 EBS Performance TuningOracle R12 EBS Performance Tuning
Oracle R12 EBS Performance TuningScott Jenner
 
Oracle data integrator 12c - getting started
Oracle data integrator 12c - getting startedOracle data integrator 12c - getting started
Oracle data integrator 12c - getting startedMichael Rainey
 
Getting optimal performance from oracle e-business suite presentation
Getting optimal performance from oracle e-business suite presentationGetting optimal performance from oracle e-business suite presentation
Getting optimal performance from oracle e-business suite presentationBerry Clemens
 
Best Practices in the Use of Columnar Databases
Best Practices in the Use of Columnar DatabasesBest Practices in the Use of Columnar Databases
Best Practices in the Use of Columnar DatabasesDATAVERSITY
 
Delta Lake Cheat Sheet.pdf
Delta Lake Cheat Sheet.pdfDelta Lake Cheat Sheet.pdf
Delta Lake Cheat Sheet.pdfkaransharma62792
 
Snowflake SnowPro Core Cert CheatSheet.pdf
Snowflake SnowPro Core Cert CheatSheet.pdfSnowflake SnowPro Core Cert CheatSheet.pdf
Snowflake SnowPro Core Cert CheatSheet.pdfDustin Liu
 
Microsoft SQL Server Database Administration.pptx
Microsoft SQL Server Database Administration.pptxMicrosoft SQL Server Database Administration.pptx
Microsoft SQL Server Database Administration.pptxsamtakke1
 
Self-Service Business Intelligence with Power BI
Self-Service Business Intelligence with Power BISelf-Service Business Intelligence with Power BI
Self-Service Business Intelligence with Power BITheresa Lubelski
 
iceberg introduction.pptx
iceberg introduction.pptxiceberg introduction.pptx
iceberg introduction.pptxDori Waldman
 
Common Strategies for Improving Performance on Your Delta Lakehouse
Common Strategies for Improving Performance on Your Delta LakehouseCommon Strategies for Improving Performance on Your Delta Lakehouse
Common Strategies for Improving Performance on Your Delta LakehouseDatabricks
 

Was ist angesagt? (20)

Odi 12c-getting-started-guide-2032250
Odi 12c-getting-started-guide-2032250Odi 12c-getting-started-guide-2032250
Odi 12c-getting-started-guide-2032250
 
MS-SQL SERVER ARCHITECTURE
MS-SQL SERVER ARCHITECTUREMS-SQL SERVER ARCHITECTURE
MS-SQL SERVER ARCHITECTURE
 
Oracle Tablespace - Basic
Oracle Tablespace - BasicOracle Tablespace - Basic
Oracle Tablespace - Basic
 
Oracle sql high performance tuning
Oracle sql high performance tuningOracle sql high performance tuning
Oracle sql high performance tuning
 
Azure+Databricks+Course+Slide+Deck+V4.pdf
Azure+Databricks+Course+Slide+Deck+V4.pdfAzure+Databricks+Course+Slide+Deck+V4.pdf
Azure+Databricks+Course+Slide+Deck+V4.pdf
 
Overview Profitability and Cost Management Cloud Services
Overview Profitability and Cost Management Cloud Services Overview Profitability and Cost Management Cloud Services
Overview Profitability and Cost Management Cloud Services
 
Oracle backup and recovery
Oracle backup and recoveryOracle backup and recovery
Oracle backup and recovery
 
Fusion Middleware Oracle Data Integrator
Fusion Middleware Oracle Data IntegratorFusion Middleware Oracle Data Integrator
Fusion Middleware Oracle Data Integrator
 
Oracle statistics by example
Oracle statistics by exampleOracle statistics by example
Oracle statistics by example
 
Oracle DB Performance Tuning Tips
Oracle DB Performance Tuning TipsOracle DB Performance Tuning Tips
Oracle DB Performance Tuning Tips
 
Oracle R12 EBS Performance Tuning
Oracle R12 EBS Performance TuningOracle R12 EBS Performance Tuning
Oracle R12 EBS Performance Tuning
 
Oracle data integrator 12c - getting started
Oracle data integrator 12c - getting startedOracle data integrator 12c - getting started
Oracle data integrator 12c - getting started
 
Getting optimal performance from oracle e-business suite presentation
Getting optimal performance from oracle e-business suite presentationGetting optimal performance from oracle e-business suite presentation
Getting optimal performance from oracle e-business suite presentation
 
Best Practices in the Use of Columnar Databases
Best Practices in the Use of Columnar DatabasesBest Practices in the Use of Columnar Databases
Best Practices in the Use of Columnar Databases
 
Delta Lake Cheat Sheet.pdf
Delta Lake Cheat Sheet.pdfDelta Lake Cheat Sheet.pdf
Delta Lake Cheat Sheet.pdf
 
Snowflake SnowPro Core Cert CheatSheet.pdf
Snowflake SnowPro Core Cert CheatSheet.pdfSnowflake SnowPro Core Cert CheatSheet.pdf
Snowflake SnowPro Core Cert CheatSheet.pdf
 
Microsoft SQL Server Database Administration.pptx
Microsoft SQL Server Database Administration.pptxMicrosoft SQL Server Database Administration.pptx
Microsoft SQL Server Database Administration.pptx
 
Self-Service Business Intelligence with Power BI
Self-Service Business Intelligence with Power BISelf-Service Business Intelligence with Power BI
Self-Service Business Intelligence with Power BI
 
iceberg introduction.pptx
iceberg introduction.pptxiceberg introduction.pptx
iceberg introduction.pptx
 
Common Strategies for Improving Performance on Your Delta Lakehouse
Common Strategies for Improving Performance on Your Delta LakehouseCommon Strategies for Improving Performance on Your Delta Lakehouse
Common Strategies for Improving Performance on Your Delta Lakehouse
 

Andere mochten auch

Odi best-practice-data-warehouse-168255
Odi best-practice-data-warehouse-168255Odi best-practice-data-warehouse-168255
Odi best-practice-data-warehouse-168255nm2013
 
How to solve complex business requirements with Oracle Data Integrator?
How to solve complex business requirements with Oracle Data Integrator?How to solve complex business requirements with Oracle Data Integrator?
How to solve complex business requirements with Oracle Data Integrator?Gurcan Orhan
 
Oracle Data Integration Presentation
Oracle Data Integration PresentationOracle Data Integration Presentation
Oracle Data Integration Presentationkgissandaner
 
ODI 11g in the Enterprise - BIWA 2013
ODI 11g in the Enterprise - BIWA 2013ODI 11g in the Enterprise - BIWA 2013
ODI 11g in the Enterprise - BIWA 2013Mark Rittman
 
Oracle data integrator project
Oracle data integrator projectOracle data integrator project
Oracle data integrator projectAmit Sharma
 
Veri Ambarı Nedir, Nasıl Oluşturulur?
Veri Ambarı Nedir, Nasıl Oluşturulur?Veri Ambarı Nedir, Nasıl Oluşturulur?
Veri Ambarı Nedir, Nasıl Oluşturulur?Gurcan Orhan
 
Migration Steps from OWB 2 ODI
Migration Steps from OWB 2 ODIMigration Steps from OWB 2 ODI
Migration Steps from OWB 2 ODIGurcan Orhan
 
Integrating Oracle Data Integrator with Oracle GoldenGate 12c
Integrating Oracle Data Integrator with Oracle GoldenGate 12cIntegrating Oracle Data Integrator with Oracle GoldenGate 12c
Integrating Oracle Data Integrator with Oracle GoldenGate 12cEdelweiss Kammermann
 
Making Oracle Services work
Making Oracle Services workMaking Oracle Services work
Making Oracle Services workBjoern Rost
 
Odi 11g master and work repository creation steps
Odi 11g master and work repository creation stepsOdi 11g master and work repository creation steps
Odi 11g master and work repository creation stepsDharmaraj Borse
 
Multiple files single target single interface
Multiple files single target single interfaceMultiple files single target single interface
Multiple files single target single interfaceDharmaraj Borse
 
ODI 11g - Multiple Flat Files to Oracle DB Table by taking File Name dynamica...
ODI 11g - Multiple Flat Files to Oracle DB Table by taking File Name dynamica...ODI 11g - Multiple Flat Files to Oracle DB Table by taking File Name dynamica...
ODI 11g - Multiple Flat Files to Oracle DB Table by taking File Name dynamica...Darshankumar Prajapati
 
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)Darshankumar Prajapati
 
Hitchhiker's Guide to free Oracle tuning tools
Hitchhiker's Guide to free Oracle tuning toolsHitchhiker's Guide to free Oracle tuning tools
Hitchhiker's Guide to free Oracle tuning toolsBjoern Rost
 

Andere mochten auch (20)

Odi best-practice-data-warehouse-168255
Odi best-practice-data-warehouse-168255Odi best-practice-data-warehouse-168255
Odi best-practice-data-warehouse-168255
 
How to solve complex business requirements with Oracle Data Integrator?
How to solve complex business requirements with Oracle Data Integrator?How to solve complex business requirements with Oracle Data Integrator?
How to solve complex business requirements with Oracle Data Integrator?
 
Oracle Data Integration Presentation
Oracle Data Integration PresentationOracle Data Integration Presentation
Oracle Data Integration Presentation
 
Odi interview questions
Odi interview questionsOdi interview questions
Odi interview questions
 
Oracle Data integrator 11g (ODI) - Online Training Course
Oracle Data integrator 11g (ODI) - Online Training Course Oracle Data integrator 11g (ODI) - Online Training Course
Oracle Data integrator 11g (ODI) - Online Training Course
 
ODI 11g in the Enterprise - BIWA 2013
ODI 11g in the Enterprise - BIWA 2013ODI 11g in the Enterprise - BIWA 2013
ODI 11g in the Enterprise - BIWA 2013
 
Oracle data integrator project
Oracle data integrator projectOracle data integrator project
Oracle data integrator project
 
Veri Ambarı Nedir, Nasıl Oluşturulur?
Veri Ambarı Nedir, Nasıl Oluşturulur?Veri Ambarı Nedir, Nasıl Oluşturulur?
Veri Ambarı Nedir, Nasıl Oluşturulur?
 
Migration Steps from OWB 2 ODI
Migration Steps from OWB 2 ODIMigration Steps from OWB 2 ODI
Migration Steps from OWB 2 ODI
 
Odi ireland rittman
Odi ireland rittmanOdi ireland rittman
Odi ireland rittman
 
Integrating Oracle Data Integrator with Oracle GoldenGate 12c
Integrating Oracle Data Integrator with Oracle GoldenGate 12cIntegrating Oracle Data Integrator with Oracle GoldenGate 12c
Integrating Oracle Data Integrator with Oracle GoldenGate 12c
 
Introduction to ETL and Data Integration
Introduction to ETL and Data IntegrationIntroduction to ETL and Data Integration
Introduction to ETL and Data Integration
 
Making Oracle Services work
Making Oracle Services workMaking Oracle Services work
Making Oracle Services work
 
Odi 11g master and work repository creation steps
Odi 11g master and work repository creation stepsOdi 11g master and work repository creation steps
Odi 11g master and work repository creation steps
 
Multiple files single target single interface
Multiple files single target single interfaceMultiple files single target single interface
Multiple files single target single interface
 
ODI 11g - Multiple Flat Files to Oracle DB Table by taking File Name dynamica...
ODI 11g - Multiple Flat Files to Oracle DB Table by taking File Name dynamica...ODI 11g - Multiple Flat Files to Oracle DB Table by taking File Name dynamica...
ODI 11g - Multiple Flat Files to Oracle DB Table by taking File Name dynamica...
 
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)
 
Oracle in Database Hadoop
Oracle in Database HadoopOracle in Database Hadoop
Oracle in Database Hadoop
 
Hitchhiker's Guide to free Oracle tuning tools
Hitchhiker's Guide to free Oracle tuning toolsHitchhiker's Guide to free Oracle tuning tools
Hitchhiker's Guide to free Oracle tuning tools
 
Big data
Big dataBig data
Big data
 

Ähnlich wie Best Practices with ODI : Flexibility

Final report mobile shop
Final report   mobile shopFinal report   mobile shop
Final report mobile shopViditsingh22
 
Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007paulguerin
 
Practicas oracle10g
Practicas oracle10gPracticas oracle10g
Practicas oracle10grehoscript
 
Change tracking
Change trackingChange tracking
Change trackingSonny56
 
IFESFinal58
IFESFinal58IFESFinal58
IFESFinal58anish h
 
Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013Valeriy Kravchuk
 
Sql interview question part 4
Sql interview question part 4Sql interview question part 4
Sql interview question part 4kaashiv1
 
Sql interview question part 4
Sql interview question part 4Sql interview question part 4
Sql interview question part 4kaashiv1
 
Mysql Performance Schema - fossasia 2016
Mysql Performance Schema - fossasia 2016Mysql Performance Schema - fossasia 2016
Mysql Performance Schema - fossasia 2016Mayank Prasad
 
Functional tests with TYPO3
Functional tests with TYPO3Functional tests with TYPO3
Functional tests with TYPO3cpsitgmbh
 
Introduction to-mongo db-execution-plan-optimizer-final
Introduction to-mongo db-execution-plan-optimizer-finalIntroduction to-mongo db-execution-plan-optimizer-final
Introduction to-mongo db-execution-plan-optimizer-finalM Malai
 
Introduction to Mongodb execution plan and optimizer
Introduction to Mongodb execution plan and optimizerIntroduction to Mongodb execution plan and optimizer
Introduction to Mongodb execution plan and optimizerMydbops
 
BigQuery JavaScript User-Defined Functions by THOMAS PARK and FELIPE HOFFA at...
BigQuery JavaScript User-Defined Functions by THOMAS PARK and FELIPE HOFFA at...BigQuery JavaScript User-Defined Functions by THOMAS PARK and FELIPE HOFFA at...
BigQuery JavaScript User-Defined Functions by THOMAS PARK and FELIPE HOFFA at...Big Data Spain
 
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)Dave Stokes
 
SQL Saturday 108 -- Enterprise Data Mining with SQL Server
SQL Saturday 108 -- Enterprise Data Mining with SQL ServerSQL Saturday 108 -- Enterprise Data Mining with SQL Server
SQL Saturday 108 -- Enterprise Data Mining with SQL ServerMark Tabladillo
 
SQL Saturday 109 -- Enterprise Data Mining with SQL Server
SQL Saturday 109 -- Enterprise Data Mining with SQL ServerSQL Saturday 109 -- Enterprise Data Mining with SQL Server
SQL Saturday 109 -- Enterprise Data Mining with SQL ServerMark Tabladillo
 

Ähnlich wie Best Practices with ODI : Flexibility (20)

Final report mobile shop
Final report   mobile shopFinal report   mobile shop
Final report mobile shop
 
Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007
 
Practicas oracle10g
Practicas oracle10gPracticas oracle10g
Practicas oracle10g
 
Change tracking
Change trackingChange tracking
Change tracking
 
IFESFinal58
IFESFinal58IFESFinal58
IFESFinal58
 
Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013
 
Ebook4
Ebook4Ebook4
Ebook4
 
Sql interview question part 4
Sql interview question part 4Sql interview question part 4
Sql interview question part 4
 
Sql interview question part 4
Sql interview question part 4Sql interview question part 4
Sql interview question part 4
 
MySQL Presentation
MySQL PresentationMySQL Presentation
MySQL Presentation
 
Mysql Performance Schema - fossasia 2016
Mysql Performance Schema - fossasia 2016Mysql Performance Schema - fossasia 2016
Mysql Performance Schema - fossasia 2016
 
Functional tests with TYPO3
Functional tests with TYPO3Functional tests with TYPO3
Functional tests with TYPO3
 
Introduction to-mongo db-execution-plan-optimizer-final
Introduction to-mongo db-execution-plan-optimizer-finalIntroduction to-mongo db-execution-plan-optimizer-final
Introduction to-mongo db-execution-plan-optimizer-final
 
Introduction to Mongodb execution plan and optimizer
Introduction to Mongodb execution plan and optimizerIntroduction to Mongodb execution plan and optimizer
Introduction to Mongodb execution plan and optimizer
 
Tic tac toe game code
Tic tac toe game codeTic tac toe game code
Tic tac toe game code
 
Tic tac toe
Tic tac toeTic tac toe
Tic tac toe
 
BigQuery JavaScript User-Defined Functions by THOMAS PARK and FELIPE HOFFA at...
BigQuery JavaScript User-Defined Functions by THOMAS PARK and FELIPE HOFFA at...BigQuery JavaScript User-Defined Functions by THOMAS PARK and FELIPE HOFFA at...
BigQuery JavaScript User-Defined Functions by THOMAS PARK and FELIPE HOFFA at...
 
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
 
SQL Saturday 108 -- Enterprise Data Mining with SQL Server
SQL Saturday 108 -- Enterprise Data Mining with SQL ServerSQL Saturday 108 -- Enterprise Data Mining with SQL Server
SQL Saturday 108 -- Enterprise Data Mining with SQL Server
 
SQL Saturday 109 -- Enterprise Data Mining with SQL Server
SQL Saturday 109 -- Enterprise Data Mining with SQL ServerSQL Saturday 109 -- Enterprise Data Mining with SQL Server
SQL Saturday 109 -- Enterprise Data Mining with SQL Server
 

Kürzlich hochgeladen

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Kürzlich hochgeladen (20)

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

Best Practices with ODI : Flexibility

  • 1. Gürcan ORHAN Enterprise Data Warehouse Architect Ekol Logistics Corp. 30th May 2017 Best Practices with Oracle Data Integrator (ODI): Flexibility http://gurcanorhan.wordpress.com @gurcan_orhan http://tr.linkedin.com/in/gurcanorhan
  • 2. Who Am I ? +20 years of IT experience. +14 years of DWH experience. +10 years of Oracle Data Integrator experience. +8 years of Oracle Warehouse Builder experience. Sybase Power Designer, ERwin Data Modeler, SDDM OBIEE, Cognos, Microstrategy, Business Objects, Qlikview, Tableau IBM Data Stage, SAP Data Services, Informatica, etc… Oracle Excellence Awards - Technologist of the Year 2011 : Enterprise Architect DWH & BI Chair : TROUG (Turkish Oracle User Group) Published Customer Snapshot for NODI @Oracle.com Published videos about ODI @Oracle.com (Oracle Media Network) Published OTN Podcasts about “Data Warehousing and ODI” “ODI and the Evolution of Data Integration” 3 different “2MTT”s Articles in OTech Magazine, SearchSoftwareQuality.com Annual panelist for ODTUG “Ask the Experts Panel : ODI” Presenter in OOW since 2010 (7 times in a row ⭐ ) Presenter in many OUG conferences in globe Presenter in various universities in Turkey 23RD MAY 2017 / #OTNEMEATOUR
  • 3. Ekol Germany Warehousing Solutions begin with the Kardelen Facility 1996 2003 2010 2012 2014 2016 201520132011200820021990 Acquire STS Int. Transport Ekol Bosnia Ekol France Ekol Greece Ekol Ukraine Ekol Spain Ekol Bulgaria Ekol Czech Rep. Ekol Iran Ekol PolandEkol Italy Ekol Romania Ekol HungaryAcquire Unok/Unatsan Rainbow Replaced by Quadro (software) Intermodal operations Ro-Ro operations Established Ekol Milestones
  • 6. 30 MAY 2017 / #OTNEMEATOUR My Definition of ODI 6
  • 7. 30 MAY 2017 / #OTNEMEATOUR Make sure you have;  Backup your repository  Backup your Knowledge Modules (export, duplicate)  Backup your necessary ODI development Before trying something in your environment Remember to create a zzz_Test folder and test before apply Attention …!!! 7
  • 9. 30 MAY 2017 / #OTNEMEATOUR select count(1) from msdb.dbo.sysjobhistory where step_id = 0 and run_status = 1 and job_id = (select job_id from msdb.dbo.sysjobs where name = 'My_BI_Job') and run_date = CAST(SUBSTRING('#V_SYSDATE',1,8) as integer) Use A Variable Within A Variable 9
  • 10. 30 MAY 2017 / #OTNEMEATOUR SELECT * FROM odiwd.snp_session sess, odiwd.snp_step_log step, odiwd.snp_sess_task sess_task, odiwd.snp_exp_txt exp_txt WHERE sess.sess_no = step.sess_no AND sess.sess_no = sess_task.sess_no AND step.nno = sess_task.nno AND step.i_txt_step_mess = exp_txt.i_txt AND step.step_status = 'E' AND exp_txt.txt_ord = 0 AND sess.sess_no = <%=odiRef.getSession("SESS_NO")%> SELECT NVL(MAX(ALARM_ID), 0) FROM <%=odiRef.getSchemaName("MYDB.DWH", "D")%>.TABLE_NAME SELECT NVL(MAX(ALARM_ID), 0) FROM DWH.TABLE_NAME Use A odiRef Function In A Variable 10
  • 12. 30 MAY 2017 / #OTNEMEATOUR Oracle’s most powerful querying attribute when in right hands. An Oracle hint is an optimizer directive that is embedded into an SQL statement to suggest to Oracle how the statement should be executed. http://psoug.org/reference/hints.html or just google «Oracle hints» Most common hints in a DWH system;  APPEND  PARALLEL  USE_HASH  USE_MERGE  FULL  INDEX  ORDERED  MERGE HINTS in Oracle 12
  • 13. 30 MAY 2017 / #OTNEMEATOUR KM’s… How To Apply Static Hints 13
  • 14. 30 MAY 2017 / #OTNEMEATOUR Step 1 : Create OPTIONS for KM’s KM’s… How To Apply semi-Dynamic Hints 14
  • 15. 30 MAY 2017 / #OTNEMEATOUR Step 1 : Create OPTIONS for KM’s KM’s… How To Apply semi-Dynamic Hints 15
  • 16. 30 MAY 2017 / #OTNEMEATOUR Step 2 : Insert this OPTIONS into KM’s insert <%=odiRef.getOption("INSERT_HINT")%> into <%=snpRef.getTable("L","TARG_NAME","A")%> select <%=odiRef.getOption("SELECT_HINT")%> <%=snpRef.getPop("DISTINCT_ROWS")%> <%=snpRef.getColList("", "[EXPRESSION]t[ALIAS_SEP] [CX_COL_NAME]", ",nt", "", "")%> from <%=snpRef.getFrom()%> INSERT /*+ APPEND PARALLEL(t3, 8) */ INTO t3 SELECT /*+ parallel(t1) parallel(t2) ordered use_hash(t2) index(t1 t1_abc) index(t2 t2_abc) */ COUNT(*) FROM t1, t2 WHERE t1.col1 = t2.col1; KM’s… How To Apply semi-Dynamic Hints 16
  • 17. 30 MAY 2017 / #OTNEMEATOUR KM’s… How To Apply Variabled Dynamic Hints 17 Step 1 : Create table INTEFACE_HINTS to read from database CREATE TABLE ODI.INTERFACE_HINTS ( INTERFACE_NAME VARCHAR2(255 BYTE), INTERFACE_KM VARCHAR2(255 BYTE), KM_STEP_NAME VARCHAR2(255 BYTE), KM_STEP_ORDER INTEGER, STEP_HINT_NAME VARCHAR2(255 BYTE), STEP_HINT_ORDER INTEGER, STEP_HINT_VALUE VARCHAR2(4000 BYTE) ) TABLESPACE TBS_ODI NOLOGGING NOCOMPRESS NOCACHE NOPARALLEL MONITORING;
  • 18. 30 MAY 2017 / #OTNEMEATOUR KM’s… How To Apply Variabled Dynamic Hints 18 Step 2 : Add 1st command (Get Hints) in Knowledge Module
  • 19. 30 MAY 2017 / #OTNEMEATOUR KM’s… How To Apply Variabled Dynamic Hints 19 Step 2 : Add 1st command (Get Hints) in Knowledge Module
  • 20. 30 MAY 2017 / #OTNEMEATOUR KM’s… How To Apply Variabled Dynamic Hints 20 Step 3 : Use Hints in SQL statements in Knowledge Module
  • 21. 30 MAY 2017 / #OTNEMEATOUR KM’s… How To Apply Variabled Dynamic Hints 21 Output of step “Get Hints” in ODI
  • 22. 30 MAY 2017 / #OTNEMEATOUR KM’s… How To Apply Variabled Dynamic Hints 22 Output of “SQL Statements” in ODI
  • 24. 30 MAY 2017 / #OTNEMEATOUR Right Click ➜ Insert Datatype Adding Datatypes 24
  • 25. 30 MAY 2017 / #OTNEMEATOUR Adding Datatypes 25 Converted To, Converted From
  • 27. 30 MAY 2017 / #OTNEMEATOUR Topology Manager ➜ Languages ➜ SQL ➜ Aggregate (or other) Adding Database Related Functions 27
  • 28. 30 MAY 2017 / #OTNEMEATOUR Adding User Functions 28 User Functions ➜ Right Click ➜ New User Function AVG CORR COUNT COVAR_POP COVAR_SAMP CUME_DIST DENSE_RANK FIRST LAST LISTAGG, MAX MIN PERCENT_RANK PERCENTILE_CONT PERCENTILE_DISC RANK STDDEV STDDEV_POP STDDEV_SAMP SUM VAR_POP VAR_SAMP VARIANCE
  • 29. 30 MAY 2017 / #OTNEMEATOUR Adding User Functions 29 User Functions ➜ Impact Analysis
  • 31. 30 MAY 2017 / #OTNEMEATOUR Running in «Asynchronous Mode» Error Handler Max. Number of Failed Child Sessions = 1 Mail body (refresh variable) Send mail Raise Error (error refresh variable) Handling Alerts 31
  • 32. 30 MAY 2017 / #OTNEMEATOUR Send e-mail for each script, attach the appropriate file.  Mail Server : #V_MAIL_SERVER_IP  From : This is static, user that you are sending mail.  TO : #V_ERROR_MAIL_TO (need to be refreshed in the beginning of your ETL or current package)  CC : #V_ERROR_MAIL_CC (need to be refreshed in the beginning of your ETL or current package)  BCC : #V_ERROR_MAIL_BCC (need to be refreshed in the beginning of your ETL or current package)  Subject : There are #V_MY_ERROR_COUNT errors exist in your system (Error Code = #V_MY_ERROR_CODE)  Attachment : /data/my_errors/MY_Error_#V_MY_ERROR_CODE.txt (will represent as /data/my_errors/MY_Error_1.txt initially, then will attach regarding file in the loop, every step will attach its own script file)  Message Body : #V_MY_ERROR_DESC Handling - in ETL - Data Quality 32
  • 34. 30 MAY 2017 / #OTNEMEATOUR Step 1 : Operating system folders and read file names Step 2 : IKM Knowledge Module (edited to fit for purpose) Step 4 : ODI Procedure to rename files for external table usage Step 3 : ETL_FILE LOG (database table) Step 6 : ODI Procedure to Get File List of operating system Step 7 : a single ODI Interface (loading and transforming) Step 8 : Some ODI Variables Step 9 : ODI Package for running everything in right order Step 5 : ODI Procedures to finish working with files File2Table… Summary (F2T) 34
  • 35. 30 MAY 2017 / #OTNEMEATOUR Illustration for files received from «web_logs» F2T… Prepare Folders (Step 1) 35
  • 36. 30 MAY 2017 / #OTNEMEATOUR  Rename as : IKM SQL Control Append (Direct Load,HINT)  Copy current KM : IKM SQL Control Append  Add New Row : «Parallel DML», Transaction 0, No Commit alter session enable parallel dml  Add Options : «SELECT HINT», «INSERT HINT»  Add New fixed Row : «Commit transaction» to Transaction 0, Commit /* commit */  Modify : «Insert new rows» to Transaction 0, No Commit File2Table… Prepare IKM (Step 2) 36
  • 37. 30 MAY 2017 / #OTNEMEATOUR INSERT /*+ APPEND PARALLEL(4) */ INTO ODIDB.MY_TARGET_TABLE ( MY_TARGET_COLUMN_1, MY_TARGET_COLUMN_2, MY_TARGET_COLUMN_3 ) SELECT /*+ PARALLEL(MY_SOURCE_TABLE,4) FULL(MY_SOURCE_TABLE) */ MY_SOURCE_TABLE.MY_SOURCE_COLUMN_1, MY_SOURCE_TABLE.MY_SOURCE_COLUMN_2, MY_SOURCE_TABLE.MY_SOURCE_COLUMN_3 FROM ODISTG.I$MY_TARGET_TABLE MY_SOURCE_TABLE WHERE MY_SOURCE_TABLE.MY_SOURCE_COLUMN_4 = ‘USA’ AND MY_SOURCE_TABLE.MY_SOURCE_COLUMN_5 = ‘New York’ F2T… Prepare IKM (Step 2) 37
  • 38. 30 MAY 2017 / #OTNEMEATOUR COLUMN NAME PK NULL? DATA TYPE DEF COMMENT FILE_ID 1 N NUMBER (10) The unique identification number of file. FILE_NAME N VARCHAR2 (50 Byte) The name of file to be processed. FILE_GROUP N VARCHAR2 (20 Byte) Source system name or group with the same template. FILE_COPIED_FLAG Y NUMBER (1) 0 0 : not copied, 1 : copied successfully, 2 : error in copy. FILE_COPY_DATE Y DATE Date of file copied. FILE_READ_FLAG Y NUMBER (1) 0 0:not read, 1:read successfully, 2:error in read. FILE_READ_DATE Y DATE Date of file read. FILE_PROCESSED_FLAG Y NUMBER (1) 0 Date of file processed. FILE_PROCESSED_DATE Y DATE 0:not processed, 1:processed successfully, 2:error in process. Create table ETL_FILE_LOG F2T… Prepare log Table (Step 3) 38
  • 39. 30 MAY 2017 / #OTNEMEATOUR  Create external table «STG.INVOICE_LOG»  Create ODI Procedure «Rename File» mv /data/invoice_logs/#FILE_NAME/data/invoice_logs /my_external_table.ext rm /data/invoice_logs/my_external_table.ext  Step 1 ; delete previous file  Step 2 ; rename next file F2T… Rename File ODI Procedure (Step 4) 39
  • 40. 30 MAY 2017 / #OTNEMEATOUR  Create ODI Procedure – «UPDATE PROCESSED FILE» UPDATE ODI.ETL_FILE_LOG SET FILE_PROCESSED_FLAG = 1, FILE_PROCESSED_DATE = SYSDATE WHERE FILE_ID = #FILE_ID  Step 1 ; update ETL_FILE_LOG (Processed)  Step 2 ; delete processed data file rm /data/invoice_logs/my_external_table.ext  Step 3 ; delete processed log file rm /data/invoice_logs/my_external_table.log F2T… Update Processed File (Step 5) 40
  • 41. 30 MAY 2017 / #OTNEMEATOUR import java.lang as lang import java.sql as sql import snpsftp import java.lang.String import os import java.io.File as File #db connection driverSrc = ‘oracle.jdbc.driver.OracleDriver’ lang.Class.forName(driverSrc) #Production Environment urlSrc = ‘jdbc:oracle:thin:@<host>:<port>:<sid>’ #Development Environment #urlSrc = ‘jdbc:oracle:thin:@<host>:<port>:<sid>’ userSrc = ‘ODI’ passwdSrc = ‘ODI’ ConSrc = sql.DriverManager.getConnection(urlSrc, userSrc, passwdSrc); readDBLink = ConSrc.createStatement() syslist = os.listdir(‘<%=odiRef.getOption( “SOURCE_DIRECTORY” )%>’) for sys in syslist: str = java.lang.String(sys) if str.length() > 8: sqlDBLink = “select * from ODI.ETL_FILE_LOG where FILE_NAME = ‘” + sys + “‘” rqteDBLink = readDBLink.executeQuery(sqlDBLink) if not rqteDBLink.next(): sqlDBLink = “insert into ODI.ETL_FILE_LOG (FILE_ID, FILE_NAME, FILE_GROUP, FILE_SUB_GROUP, FILE_READ_FLAG, FILE_READ_DATE) values (ODI.SEQ_FILE_ID.NEXTVAL, ‘” + sys + “‘, ‘<source_system_name>’, ‘<file_type>’, ’1′, SYSDATE)” rqteDBLink = readDBLink.execute(sqlDBLink) ConSrc.close()  Create ODI Procedure Jyhton Technology – «GetFileList» F2T… GetFileList from OS (Step 6) 41
  • 42. 30 MAY 2017 / #OTNEMEATOUR  Create ODI Interface (external table  db table)  Source : STG.INVOICE_LOG (based on external table  my_external_table.ext)  Target : DWH.INVOICE_LOGS  KM : IKM SQL Control Append (Direct Load, HINT) Truncate : No Select Hint : /*+ PARALLEL(4) */ Insert Hint : /*+ APPEND PARALLEL(4) NOLOGGING */ F2T… ODI Interface (Step 7) 42
  • 43. 30 MAY 2017 / #OTNEMEATOUR  Create ODI Variable to refresh – «File_ID»  Create ODI Variable to refresh – «File_Name» SELECT NVL(MIN(FILE_ID), 0) FROM ODI.ETL_FILE_LOG WHERE FILE_READ_FLAG = 1 AND FILE_PROCESSED_FLAG = 0 AND FILE_GROUP = 'INVOICE_LOGS' SELECT FILE_NAME FROM ODI.ETL_FILE_LOG WHERE FILE_ID = #FILE_ID F2T… Prepare ODI Variables (Step 8) 43
  • 44. 30 MAY 2017 / #OTNEMEATOUR Get_File_List ODI Procedure FILE_ID Refresh Variable FILE_ID Evaluate Variable FILE_NAME Refresh Variable RENAME_FILE ODI Procedure INTERFACE From:Ext_Table To:DB.Table UPDATE_PROCESSED ODI Procedure UPDATE_REJECTED ODI Procedure Determine_Error_Desc ODI Procedure ODISendMail Rejected File F2T… Time to Pack-UP (Step 9) 44
  • 45. 30 MAY 2017 / #OTNEMEATOUR http://gurcanorhan.wordpress.com @gurcan_orhan http://tr.linkedin.com/in/gurcanorhan …Final Words… 45