Merhaba arkadaşlar sizlere bu yazımda Informatica PowerCenter Designer’ın özelliklerinin bir kısmını örneklerle anlatmaya çalışacağım.
Günümüzde kaynak adını verdiğimiz datalarımız çeşitli ortamlarda(Oracle,SQL Server,IBM DB2,Excel,PDF,Flat File vs.) bulunur. Bazen böyle farklı ortamlarda bulunan datanın tek bir platformda toplanması gerekebilir. İşte tam da bu nokta da ETL dediğimiz yapı devreye giriyor. Datawarehouse in en temel operasyonu olan ve implemetasyonda en büyük bütçeyi alan kısım ETL ( E(Extract – Ayrıştırma) , T(Transform – Dönüştürme) , L(Load – Yükleme) ) olarak adlandırılır. Kaynak database veya diğer ortamlardan datanın alınması, belli bir işlemden geçirilerek ve düzeltmeler yapılarak DW yapısına uygun hale getirilmesi ve DW database içerisine yüklenmesidir. Asıl amaç iş zekasında kullanılacak verinin en etkin kullanılacak hale getirilmesidir.
ETL ürünün içinde Power Center Designer, Workflow Manager ve Workflow Monitor adında uygulamalar vardır.
Repository Manager
Informatica’nın hafızası olarak düşünebiliriz.
-Folders
-Object
-Users and Groups içerir.
Designer
Etl mappinglerinin oluşturulduğu ve tasarlandığı yerdir.
Workflow
İş akışının sağlanmasında görevlidir.
Monitor
Çalıştırılan iş akışlarının çalışma durumları görüntülenir.
Hata alan işlerin ne hata aldıkları (Get Session Log), biten işler, çalışma süreleri bu uygulamadan izlenir.
Basit bir mapping’in en genel görümü aşağıda ki gibidir :
Source Defination → Source Qualifier → Expression Transformation → Target
Source Defination
Burada kullanacağımız kaynak tabloyu mappingimize sürüklediğimiz de Source Defination Shortcut’ını oluşturmuş oluyoruz. Bu Source’un yanında otomatik olarak Source Qualifier’ı ile gelmektedir.
Source Qualifier
Sql Query -> Sorguların seviyesine göre modellenemeyen sorguları direkt olarak buraya gömerek database gidip çekmesini sağlayabiliriz. Yani burada işi Informatica’ya değil de Database’e yaptırmış oluyoruz. (Sql Override olarak tanımlanabilir.)
SQ içinde Genereate Sql dediğimizde, oluşturduğu Sql’i database’e gönderir ve aldığı sonucu artık DB’ye gitmeden kendi Informatica içerisinde halletmeye devam eder.
Önemli olan Ports kısmına select kısmında yazan ifadeleri eklemiş olmamızdır.
Sorgumuzu SQ (Source Qualifier) içerisinde ki SQL Query kısmına yapıştırıyoruz. Daha sonra sorgumuzda bulunan select ifadelerinin sırasına bakarak SQ portlarında aynı isimle ve data formatıyla ekliyoruz. Burada Source kısmı önemli değil , eklediğin herhangi bir kaynak tablodan data formatının aynı olduğu bir item’ı üzerine sürükleyebiliriz. Dikkat etmemiz gereken SQ‘da oluşturduğumuz portlardan boşta kalan yani input girişi olmayan kalmamalı.
User Defined Join : Bir veya birden fazla source tabloyu Primary/Foreign Key alanları üzerinden joinleme işlemeni Joiner Transformation kullanmadan burada da yapabiliriz.
NOT: Farklı DB’den gelen kayıtlar bunun üzerinden joinlenemez. Örneğin Sybase’den gelen bir source ile Oracle ‘dan gelen bir source aynı SQ’da joinlenemez.
Source Filter –> Properties sekmesinde sorgumuzda Where koşulunda bulunan Filtreleri – Koşulları Source Filter kısmında tanımlıyoruz.
Number Of Sorted Ports ->Bunun kullanımı ise sortlamak istediğimiz alanı ilk sıraya getirerek,
Number Of Sorted Ports : 1 dediğimizde ilk alana göre sıralar.
Number Of Sorted Ports : 2 dediğimizde ilk iki alana göre sıralama yapar.
Select distinct -> Eğer bu ifadeyi aktif hale getirmek istersek Select distinct özelliğini seçiyoruz. Datanın çoklaması engellenir. Dezavantajı distinct edeceği alanı kendisi belirler.
İnput Port : Hiçbir porta bağımlı değildir. İşlem olarak ilk olarak değerlendirilen porttur.
Variable Port : Input portunu referans alarak hesaplanır. Variable sadece o transformation içinde kullanılır, ne input ne de output’dur. Input portunu referans olarak kullanıp saydırma işlemlerinde vs kullanılabilir.
Output Port : Input Port ve Variable Port refereans alır. Transformation içinde en son değerlendirilir.
Expression Transformation
Data Convert / Kolon İsmi Değiştirme / Kolona Spesifik değer atama
Pasif bir transformation’dur, yani giren-çıkan satır sayısı eşittir.
Addition, Subtraction, Multiplication, Division, Concat, Uppercase conversion, lowercase conversion etc. yapılabilir.
Expression Row by Row işlem yapar. Case/when – decode vs de yapılabilir.
Expression Transformation kullanarak data üzerinde yapılabilecek işlemler;
- Manipulation (değiştirme) işlemleri (LTRIM, CONCAT, UPPER, vs)
- Conversion (dönüştürme) işlemleri (TO_CHAR, TO_DECIMAL, TO_DATE, vs)
- Data temizleme ve düzenleme işlemleri (ISNULL, REPLACESTR, vs
- Matematiksel işlemler (LOG, POWER, vs)
Mapping üzerinde Check-in ve Check-out :
Bir mapping üzerinde değişiklik yapmak istediğimize mappingi mutlaka kendi DEV ortamımızda üzerimize almamız gerekmektedir. (Check-out)
Şöyle ki;
Mapping’imize sağ tıklayıp -> Versioning -> Check-out diyebiliriz.
Buraya da mapping’in hangi kullanıcı üzerinde olduğunu anlatmak için Comment kısmına yorum yazabiliriz.
Üzerinde bulunan CheckOut’ları görüntülemek için Versioning → Find Checkouts yapıyoruz.
⇓
Burada all users ı işaretlersek diğer kullanıcıların da üzerine aldıkları mapping’leri görebiliriz.Diğer kullanıcıların da işlem yapmasını istediğimiz de Sağ tıklayıp Check-In yapabiliriz.
Mappinglerin gösterim şekilleri genel olarak 2 türlüdür.
- Arrange All
- Arrange All Iconic
Bir mappingte var olan alanın geldiği ya da gideceği yolu bulmak için o alan üzerinde sağa tıklayıp Select Link Path → Forward /Backward diyip bulabiliriz.
Dip Not : Informatica da benim en çok kullandığım kısımlardan beri her türlü Fonksiyonların özelliklerini ve kullanımlarını anlatan Help → Contents’dir.
Target
Data’nın Hedef’e yüklenmesidir.
Target Tabloyu oluşturmak için Expression → Create and Target → Genereate / Execute Sql Edit Sql script dediğimizde oluşturulan Scripti alıp database’de target tabloyu yaratıyoruz.
Sadece o tablonun alanlarını almak için oluşturduğumuz geçici target’ı tabloyu siliyoruz.(Target → (sağ click) Clear All) DB de yarattığımız Import Edilmiş olan Target’ı kullanıyoruz.
Expression Transformation’dan oluşturulan Target’ın kolon isimleri ve data formatları Expresion ile aynı ise Autolink By Name ile direk alanları birbirine bağlayabiliriz.
Informatica Fonksiyonları
Bu bölümde sizlere Informatica da kullanılan bir kaç Fonksiyonu anlatmaya çalışacağım. Tüm Fonksiyonlar Expression’ının Functions kısmında All Functions klasöründe bulunuyor.
- CASE WHEN A.PHONE_TYPE IN (‘X’, ‘Y’) THEN A.PHONE_TYPE ELSE ‘Z’ END Infortmatica’da case-when fonksiyonu olamadığı için bu yapıyıIIF(PHONE_TYPE=’X’ OR PHONE_TYPE=’Y’, PHONE_TYPE, ‘Z’) şeklinde kullanabiliriz.
- IIF(LINE_NO = 1, ‘AKTIF’, IIF(LINE_NO = 2, ‘MUSTERI’, NULL)) İç içe If fonksiyonu
- SUM(IIF(USER=’OP’, CNT,0)) Aggragation Fonksiyonu
- GET_DATE_PART(data_date, ‘YYYY’) Yılı parse etme fonksiyonu
- GET_DATE_PART(data_date, ‘MM’) Ayı parse etme fonksiyonu
- DECODE(SECURED,’Y’,”,IP) Decode fonksiyonu
- SUBSTR(MERCHANT,1,2) Substr Fonskiyonu
- Infotmatica’da Expression Transformation da between ifadesi olmadığı için , eğer select cümleciğinde böyle bir sorgu var ise bunu Between kullanmadan aşağıdaki şekilde çözebiliriz :YANIT_TARIHI BETWEEN ‘2015-01-01’ AND ‘2015-05-31’ şeklindeki ifadeyi IIF(YANIT_TARIHI >=TO_DATE( ‘2015-01-01’, ‘YYYY.MM.DD’) AND YANIT_TARIHI <= TO_DATE(‘2015-05-31’ , ‘YYYY.MM.DD’)
- REPLACESTR(TRUE,F,’Operasyon Bölgesi’,”) Replace Fonksiyonu
- TO_DATE(to_char(GET_DATE_PART(STOK,’dd’) ||’/’ || GET_DATE_PART(STOK,’mm’) || ‘/’|| GET_DATE_PART(STOK,’yyyy’)), ‘dd/mm/yyyy’) To_Date fonksiyonu
- trunc(create_date) Trunc Fonksiyonu
- LTRIM(RTRIM(CEK,’ ‘),’ ‘) Trim Fonksiyonu Ltrim ve Rtrim fonksiyonları ile yapılır.
- DATE_DIFF(sysdate, Max_effdate, ‘dd’) Date_Diff kalan gün sayısını hesaplamada kullanılır.
- to_char(RAPORLAMA_TARIHI,’dd/mm/yyyy’) To_char fonksiyonu
- Decode(Adet,NULL,0,Adet) Informatica’da NVL fonksiyonu yoktur, bunu decode yardımı ile yapabiliriz.
- ISNULL(Group_Name) ISNULL fonksiyonu
- TYPE in(1,2) ifadesi Informatica’da In(TYPE 1,2) In fonksiyonu kullanımı.
Sizlerle genelde en çok kullanılan fonksiyonları paylaştım tabi ki bunların
dışında daha bir çok fonksiyon var bunlara All Functions klasöründen ulaşabilirsiniz.
Bir diğer Informatica yazısında görüşmek üzere şimdilik hoşçakalın 🙂