25 Aralık 2012 Salı

ODI Workshop I - Paket Dizayn


 Merhaba,

Uygulama ağırlıklı yazılarla, önceki makalelerimize devam edelim. Biraz daha detay bilgilerle ilerliyor olacağız. 2 Interface çalıştıralım ve Tablo özelliklerine, bu makale için Rows Num’a değinelim.

Not olarak, Şunu bilmemizde yarar var; yazdığım makalelerde konu bağımlı olmadan anlatmayı istiyorum. Sadece bundan önceki makaleler birbirine bağlıdır ve bundan sonra yapacaklarımızda aslında bu ilk dört makaleyi yapabiliyor , yani ODI a bağlanabiliyor olmalıyız. Sonraki makaleler için bağımsız olmalarını öncelikle hedeflememden dolayı bir kaç adım diğerleriyle benzerlik gösterebilir.

Senaryomuz şöyle: Bir paket yapacağız ve bu paket için iki interface oluşturarak, ilk interface in Target Table’ı, ikince interface de Source Table olarak kullanılacak.
ODI’ı açıyoruz. Ve bağlantımızı kurarak yeni bir proje oluşturuyoruz.



Proje adını girerek kaydet diyoruz. Sol tarafa Designer altına yeni projemizin geldiğini görebiliriz.


Öncelikle interface lerimizi oluşturalım. Oluşan paket altından first_folder>interfaces>New Interface diyoruz.


Interface için adını girdikten sonra mapping ekranına geçiyoruz. Şimdi senaryomuzda biraz daha detaya inelim. Employees tablosundan employee_id leri  150 den büyük olan 25 kayıtın employee_id,ad,soyad,
Ülke, şehir, bölge ve maaşlarını alalım.

Table create scriptini paylaşıyorum:

CREATE TABLE TBL_INTERFACE
(
   employee_id    NUMBER (6),
   first_name     VARCHAR2 (20 BYTE),
   last_name      VARCHAR2 (25 BYTE),
   country_name   VARCHAR2 (40 BYTE),
   city           VARCHAR2 (30 BYTE),
   region_name    VARCHAR2 (25 BYTE),
   salary         NUMBER (8, 2)
)

Commit ledikten sonar reverse etmeyi unutmuyoruz. Nasıl reverse edildiği:


Şimdi Target alanımıza bu tablomuzu atabiliriz. Soruce kısmına da , Employees, Regions, Countries, Locations ve EMP_DETAILS_VIEW
view ini atmalıyız. Bu View da nereden çıktı diyebilirsiniz ama zaten tabloları attıkça, bunları hangi kolonlar üzerinden Join’e sokuyoruz diye düşüneceksiniz
ve cevap bu View da..:)

Tabloları ekledikçe otomatik mapping de ayarlanıyor olacak.

Sonuç olarak gelinecek şekil aşağıdaki gibi.


Görüldüğü gibi View en ortada ve zincirleri hep onun üzerinden kuruyoruz. Şimdi bir kaç filtre ekleyelim.
Öncelikle şu employee_id>150 için ve bunlardan da 25 kayıt.


Employees tablosuna gelerek employee_id  kolonunu tutup sürüklüyoruz ve filtre mizi yazıyoruz.
Satır_no kolonumuzun implementation kısmına ‘ROWNUM’ yazıyoruz ve artık her atılan satır için bir numara otomatikman tanımlanmış oluyor.


şimdi de 25 kayıta düşürmek için bu interface den sonra çalışacak olan bir interface daha yapalım.
Buradaki Target Table ı bu interface de Source kısmına atıyoruz.  Ve yeni bir tablo oluşturarak Reverse ediyoruz.

CREATE TABLE TBL_INTERFACE_2
(
   Satir_no  number(6),
   employee_id    NUMBER (6),
   first_name     VARCHAR2 (20 BYTE),
   last_name      VARCHAR2 (25 BYTE),
   country_name   VARCHAR2 (40 BYTE),
   city        VARCHAR2 (30 BYTE),
   region_name    VARCHAR2 (25 BYTE),
   salary         NUMBER (8, 2)  
)

New Interface den isim vs verdikten sonra Source a Önceki tablomuzu, Target’a da yeni create ettiğimiz tablomuzu atıyoruz.
Kaydederek çalıştırabiliriz.(IKM control u seçmeyi unutmadan:)


TBL_INTERFACE_2 deki datalarımıza baktığımızda 25 kayıt olduklarını görebiliriz.


Şimdi bu iki interface in arka arkaya çalışmalarını istediğimizi düşünelim.Önce hepsini alacak ve sonra da 25 kayıtı getirecek.
New Package diyoruz. Ve bir paket Create ediyoruz.


Açılan ekrana Paket adını girdikten sonra Alt segmentlerden Diagrama geliyoruz. Ve bu iki interface imizi süreklerek bırakıyoruz.


İnterfaceleri attıktan sonra işaretli yeşil oku seçerek aradaki bağlantı kurulur.
Ve paket kaydedilir. Tabloları öncesinde truncate etmemizde yarar var. Paketi çalıştırdığımızda en nihai hedef tablomuzun
aynı şekilde dolduğunu görebiliriz.

Uzmanlık alanımla ilgili her konuda sorularınızı mail yoluyla sorabilirsiniz.

Teşekkürler.

Hiç yorum yok:

Yorum Gönder