Yazar arşivleri: Ahmet sedef

Active and Passive Transformations In Informatica PowerCenter


In this article, i tell something about acitve and passive transformation of informatica powercenter.

Reading, manupulating and loading data is called transformation in informatica. Each transformations perform specific functions. There are two type of transformations, passive and active transformations.

Passive Transformations  that do not change rows’ count. What gives passive transformation as input, it gives as output.

  • Expression Transformation
  • Sequence Generator Transformation
  • Lookup Transformation
  • Stored Procedure Transformation
  • XML Source Qualifier Transformation
  • External Procedure Transformation
  • Input Transformation(Mapplet)
  • Output Transformation(Mapplet)

Active Transformations that change the rows’ count.   The number of input rows in source is not equal to output rows in target.

  • Source Qualifier Transformation
  • Sorter Transformation  (When Selected Distinct Option)
  • Aggregator Transformation
  • Filter Transformation
  • Union Transformation
  • Joiner Transformation
  • Normalizer Transformation
  • Rank Transformation
  • Router Transformation
  • Update Strategy Transformation
  • Advanced External Procedure Transformation
Reklamlar

Java’da Değişken Türleri


BOOLEAN: 1 byte’lık, mantıksal ifadeyi doğru(TRUE) yada yanlış(FALSE) şeklinde tutan veri tipidir.

boolean  v_deger;                                             //ilk değer verilmeden

boolean  v_deger = TRUE;                             //ilk değer verilerek.

BYTE: 1 byte’lık, tam sayı tutan veri tipidir.

byte v_deger;                                                     //ilk değer verilmeden.

byte v_deger = 67;                                           //ilk değer verilerek.

CHAR: 2 byte’lık, karakter sabitlerini tutan veri tipidir.

char v_harf;                                                      //ilk değer verilmeden.

char v_harf = ‘A’;                                            //ilk değer verilerek.

SHORT: 2 byte’lık, tam sayı tutan veri tipidir.

short v_uzunluk;                                               //ilk değer verilmeden.

short v_uzunluk = 6641254;                          //ilk değer verilerek.

INT: 4 byte’lık, tam sayı tutan veri tipidir.

int v_say;                                                            //ilk değer verilmeden.

int v_say = 52;                                                   //ilk değer verilerek.

FLOAT: 4 byte’lık, tam sayı tutan veri tipidir.

float v_sonuc;                                                    //ilk değer verilmeden

float v_sonuc =26.5f;                                       //ilk değer verilerek

LONG: 8 byte’lık, tam sayı tutan veri tipidir.

long v_APN;                                                       //ilk değer verilmeden

long v_APN = 1234567890;                           //ilk değer verilerek

DOUBLE: 8 byte’lık, ondalıklı sayıları tutan veri tipidir.

double v_a;                                                         //ilk değer verilmeden

double v_a = 0.125488;                                   //ilk değer verilerek

STRING: alfnumerik değerleri tutan veri tipidir.

String v_Mus_Ad;                                            //ilk değer verilmeden

String v_Mus_Ad = “Ahmet”;                       //ilk değer verilerek.

Rowtype kullanımı


Merhabalar, bu yazımda oracle rowtype kullanımı üzerine bilgilerimizi tazelemek istedim. Rowtype bize fonksiyon ve prosedürlerle çok esneklik sağlayan bir referans tip alma yöntemidir. Her hangi bir fonkisyon yada prosedür bir tablo üzerinde kolon veri tipini tekrar tanımlamak yerine o tablonun kolonunun veri tipini referans göstererek de yapabiliriz. Örneğin herhangi bir fonksiyon yada prosedürde muşteri nosu isimli bir değişken tanımlaması yapmak istiyorsak,

mus_no musteri.musteri_no%rowtype;

Yukarıdaki şekilde tanımlayarak kullanacağımız tablodaki tipi referans alırız. Bu durumda referans tablo olan musteri tablosunda musteri_no kolonun tipi değişkene atanacaktır.  Bu şekilde kullanıma gitmemizin nedeni ise üzerinde çalışılacak tablonun kolonun güncellenmesi sonrasında, güncelenen kolonu kullanan fonksiyon ve prosedürler de güncellemeden kurtulmaktadır. Referans verilen fonksiyon ve prosedürlerin içinde declare ile tanımlanmış değişkenler tipi referansından alacağı için sorun olmayacaktır.

Veri Madenciliğinde İstatistiksel Uygulamalar


Devasa büyüklükte veriler ile çalışırırken elimizdeki anlamlı sonuçlar çıkartmak bu verilerden faydalanmanın en iyi yoludur. Elde ettiğimiz sonuçların anlamlı ve yararlı olması için uygulunan tekniklerin bilimsel yöntemlere dayanması şarttır. Aksi takdirde sezgisel olarak bulunan durumların tutarlı olması beklenemez ve bu gibi durumlarda elde edilen sonuçlara güvenilemez.   Veri yığınlarından anlamlı veriler çıkartmak için yapacağımız işlem veri madenciliğidir. Veri madenciliği işlemi, elimizdeki veri kaynaklarına dayanarak daha önce keşfedilmemiş bilgileri ortaya çıkartma, bunlara göre karar verme ve senaryo planlarını  oluşturmaktır. Bunun için ise  istatistiksel yöntemleri uygularız. Veri madenciliğinde en çok uygulanan istatistiksel yöntemler şunlardır;

1) BAĞLANTI : İki durum arasında anlamlı ilişkidir. İstatistik literatüründe korelasyonu yüksek iki yada ikiden fazla değişkenleri bulma işidir. Örneğin bir süper markette süt ürünlerinin yanına peynir ürünlerinin konması satışıları artıyorsa, bu iki değişken olan süt satışları ve peynir satışları arasında yüksek korelasyon olduğunu göstermektedir. Öncelikle süper marketinin satış verileri incelir. Satış verileri içinde korelasyonu yüksek değişkenler bulunur. Bu değişkenlerin ait olduğu ürünler süper markette aynı veya yakın reyonlara yerleştirilir ki herhangi birini alan bir müşteri diğer ürünü de satın alması sağlanır. Düzenleme sonrasında süper marketin satış verileri incelinir ve aradaki artışlar gözlemlenir.

2) SINIFLANDIRMA : Sınıflandırma ile ürünleri satın alan ideal müşterilere ulaşılabilir. Bunun için istatistik literatüründe kümeleme analizi, diskriminant analizi, faktör analizi, temel bileşen analizi,  ..vs gibi sınıflanma ve kümüleme yapan analizler kullanılabilir.  Örnek olarak gençlerin küçük araba aldıkları, orta ileri yaştaki bireylerin ise daha büyük ve lüks arabalar aldıklarını gözlemlemiş olalım. Böyle bir durumda bir banka yada otomobil satıcısı olarak müşterilerimizi yaş ve gelirlerine göre sınıflandırma yaparak müşterilerimizi sekmentasyon yaparız.  Elimizde olan müşteri segmantasyonları için  kampanyalar düzenlenerek araba satışlarını yada otomobil kredilerinin kullanımlarının artırırız.

3) REGRESYON : Elimizde veri kaynakları ile örüntü bir değer elde etmek için kullanılır. Örneğin banka müşterilerinin kredi skorlarını tahmin etme durumu verilibilir. Müşterilerin banka ile olan geçmiş dönem işlemleri göz önüne alınarak her bir müşteri için skorlama yada puanlama tablosu çıkartılabilir. Bu gibi durumda regresyon modellerini kullanmak uygun bir çözüm olacaktır.

4) ZAMAN SERİLERİ :  Elimizdeki verileri kullanarak gelecek öngöründe bulunma işlemidir. Bunun için elimizdeki verinin geçmiş zaman değerleri zaman serileri analiz yöntemleri kullanarak analiz edilir. Verinin karakteristik özellikleri çıkartılır. Gelecek dönemdeki değerleri tahmin edilir ve olası senaryolar simüle edilir. Böylece müşterinin gelecekte nasıl davranacağı veren sağlam bir ön bilgimiz olur.

Lojistik Regresyon


Diskriminant analizi ve çapraz tablolara alternatif olarak en çok kullanılan yöntemlerden birisi olan lojistik regresyon, normal dağılım ve ortak kovaryans varsayımları karşılanmadığı zamanlarda kullanılmaktadır. Lojistik regresyonun bu varsayımları karşılamamasında ki neden analizin yapılacağı veri setindendir. Yani bağımlı değişken sıralayıcı ve sınıflayıcı ölçekte olduğundan dolayıdır, yalnız bağımsız değişkenler sürekli yada kategorik ölçekte de olabilirler. Lojistik regresyon modeline sınırlayıcı yada kategorik ölçekte bir değişken eklenmek istendiğinde değişkenlerin üzerinde bir takım dönüşümler yapılmalıdır. Bu dönüşümler bağımlı değişken ile bağımsız değişken arasında doğrusal bir ilişkiyi verecek bir şekilde link fonksiyon, lojit veya probit dönüşümlerinden birisi olabilir. Örneğin bağımsız değişkenlerde 1 birimlik artışın bu dönüşümler sonucunda elde edilin sonuç ile modeldeki katsayısı çarpımı kadar bağımsız değişkende bir değişliğe neden olduğunu söyleyebiliriz. Şunu da belirtmek gerekir ki; modelde değişkenler üzerinde dönüşümler olduğundan dolayı değişkenlerin katsayılarının tahmininde en çok olabilirlik yöntemi kullanılır.

Elde edilen modelin bir anlam ifade etmesi için modeldeki bağımsız değişkenlerin katsayılarının anlamlılıklarının sınanması gerekmektedir. Sınamalar, en iyi modelin kurulmasını en az değişken ile yapılmasında yön göstericidirler.     Lojistik regresyon modeli, klasik regresyon modeli gibi olmadığı için katsayıların sınanmasında olabilirlik oran testi (likelihood ratio test), Score testi ve Wald testleri kullanılır. Burada asıl sorun; modelin bağımlı değişken hakkında incelenecek değişkenin, incelenen değişken olmayan modelden daha fazla bilgi içerip içermediğidir.

Lojistik regresyon modelindeki katsayılar yorumlanır iken odds (farklılıklardan) ve odds oranı (farklılıklar oranı) dan yararlanılır. Odds lar lojit dönüşümünün doğal logaritmalarının alınmış halidir. Odds oranı ise x=1 için hesaplanan odds un x=0 için hesaplanan odd a oranıdır. Farklılıklar oranının doğal logaritması ise log odds oranını verir. Modele dahil edilecek değişkenlere ise olabilirlik oranlarına ve Wald istatistikleri yorumlanarak karar verilir.

Lojistik regresyona getirilen eleştirilerden birisi de değişken sayısı artıkça model kurmanın zorlaşmasıdır. Yani değişken sayısı artıkça yapılacak işlem artmaktadır. Bu tür işlemleri yapmak ise zannedildiği kadar kolay değildir. Ayrıca değişken sayılarının artması tahmin edilen standart hataların da yüksek çıkmasına neden olmaktadır. Bu da veri setinin ana kütlesine bağımlılığı artırmaktadır.

OLTP ve OLAP veri tabanı sistemleri


Bilgisayarla iş yapılan yerlerde yoğun olarak kullanılan veritabanları; iki amaçla kullanılır.  Kullanım amaçlarından birisi, optimize edilmiş sistemler için OLTP ( Online Transaction Processing)dir. İkincisi ise, üretilen verilerin anlık olarak saklanması ( Online Analiytical Processing)’dir. Veriler üzerinde sürekli olarak değişiklikler, eklemeler ve silinmeler oluyorsa OLTP sistemlerinin kullanılması daha iyi bir tercihtir. Veriler daha çok raporlama ve karar destek amacı ile kullanılacaksa OLAP sistemlerinin kullanılması mantıklı bir seçim olacaktır. OLAP sistemler aracılığı ile veri ambarları ve datamark gibi yapılar kullanılarak yoğun bir şekilde üretilmiş verilerin analizleri ve raporları oluşturulur. Böylece tüketici, satış eğilimleri, üretim maliyetleri, müşteri profili … vs konularda kullanılacak veriler elde edilir. Eğer veriler OLTP ve OLAP sistemlerinin ikisine de uygunluk gösteriyorsa, bu iki sistemi bir arada barından bir veritabanı sistemi kullanılabilir.

SQL nedir, ne değildir


SQL, açılımı “Structured Query Language” yani Türkçe karşılığı ile “Yapısal Sorgulama Dili” olan veritabanı işlemleri ve komutlarından oluşan bir dildir. SQL, kullanıcıların isteklerini veritabanı sistemine anladığı dilden anlatan bir söz dizimidir, yani bir dildir. Bu dil sayesinde veritabanında var olan kayıtlar görüntülenebilir, değiştirilebilir ve yeni kayıtlar eklenebilir. SQL bir dildir ,ancak bir programlama dili değildir. Yani, program geliştirme işlemlerinde kullanılır ama tek başına yeterli değildir. Program geliştir iken SQL bilmek programcıya esneklik ve üretkenlik sağlar. SQL her ne kadar iyi bilinirse bilinsin, aynı zamanda iyi bir yapısal programlama dilini de bilmek iyi bir program yazmak için gereklidir.

SQL, 1983 yılında IBM laboratuarlarında çalışmalarla tamamlanmış ve 1987 yılında ISO ve ardında da ANSI tarafından standart olarak kabul edilmiştir. Daha sonra bu standartları kullanarak veritabanı yönetim sistemleri geliştirilmiştir. Bu veritabanı yönetim sistemlerinden en çok bilenen ve kullanılanları ise; Oracle, MS SQL Server, Sysbase, Informix, Progcess ve MySQL (MySQL’in üretirici ve geliştiricisi olan Sun, Oracle tarafından geçtiğimiz yıllarda satın alınmıştır. MySQL’in artık geliştirme çalışmaları Oracle çatısı altında devam edilmektedir. Durumun ne olacağını sonraki makalelerimde tahmin etmeye çalışacağım.) ‘dir. Bütün bu veritabanı yönetim sistemlerinde, temel SQL kodları çalışır. Aynı tablolarda aynı sonuçları verir. Veritabanı yönetim sisteminlerinde kullanılan SQL ifadelerinin farklılaşması ise veritabanı yönetim sistemlerinin SQL’e yapısal sorgulama dillerinden bazı özellikleri eklemelerinden kaynaklanmaktadır. Örneğin temel olarak SQL’den if, case, next, do gibi şartlı ifadeler, döngüler ve karşılaştırmalar bulunmaz. SQL’de bulunmayan bu prosedür, fonksiyon, şartlı ifadeler ve karşılaştırmaların yokluğunu gidermek için; Oracle PL/SQL ( Programming Language /SQL), Microsoft firması SQL Server de T-SQL, Sysbase yine T-SQL dilini geliştirmiştir.

SQL dilinin; karar yapıları, döngüler ve benzeri yapısal programlama dillerindeki özelliklerden yoksul olduğunu yukarda belirttik. Veritabanı yönetim sistemi bu eksikleri PL/SQL yada T-SQL gibi dil tanımlamalarını kullanarak giderir. Ancak veritabanında verilerin hacmi artıkça daha gelişmiş bir veritabanı yönetim sistemine ihtiyaç ise kaçınılmazdır.

Kullanıcı herhangi bir veritabanına bağlandığında SQL (PL/SQL yada T-SQL) komutlarını kullanarak veritabanı yönetim sistemine istekte bulunur. Bu isteklerde kullanılan komutlar 5 kategoride toplanabilir;

a) Veri sorgulama komutları

b) Tabloya veri ekleme, değiştirme ve silme komutları

c) Veritabanı nesnelerini oluşturma, değiştirme ve silme komutları

d) Veritabanına ve nesnelerine erişimi kontrol etme komutları

e) Veritabanın tutarlığını ve bütünlülüğünü kontrol etme komutları

SQL, bir programlama dili olmadığına göre; sadece SQL kullanılarak bir kullanıcı arayüzü tanımlanamaz ya da bir dosya yönetimi yapılamaz. SQL, temelde 3 ifade grubundan oluşur.

1. Veri Tanımlama Dili: (Data Defination Language = DLL) Tablo, trigger, view gibi veri tabanı nesnelerini tanımlayan komutlar bu grupta yer alır. Nesne CREATE komutu ile oluşturulur, ALTER komutu ile değiştirilir ve DROP komutu ile silinir.

2. Veri İşleme Dili: (Data Manuplation Language = DML ) Veri seçme, ekleme, silme ve sorgu sonuçlarında sıralama veya filtreleme gibi komutlar bu grupta yer alır.  INSERT ile veri eklenir, DELETE ile veri silinir, UPDATE ile veri güncellenir, SELECT ile veri seçilir, WHERE ile filtrelenir, ORDER ile sıralama yapılır. Ayrıca INTO, FROM, LIKE, GROUP BY, HAVING… gibi yan söz deyimleri de bu grupta yer alır.

3. Veri Kontrol Dili: Veritabanı yönetim sisteminde roller ve kullanıcılar için ifade ve nesne kullanım izinlerini tanımlar. Erişim ve erişim kaldırma ifadeleri ile bu haklar ayarlanır. Ayrıca, erişim engelleme de kullanılan veritabanı yönetim sistemine (Oracle, MS SQL Server) göre bu grupta yer alabilir.

İlişkisel Veritabanı Yönetim Sistemleri


Günümüzde kullanımı en yaygın veritabanı ilişkisel veritabanı ve en yaygın veri tabanı yönetim sistemleri de ilişkisel veritabanı yönetim sistemleridir. İlişkisel veritabanının en önemli yanı, oluşturulan tabloların birbiri ile ilişkilerinin olmasıdır. Bu nedenle veritabanı yönetim sistemlerine “ilişkisel” denilmektedir.

En basit anlamda bir veritabanından bahsetmek için bir veritabanında en az iki tablo olmalıdır. Ve oluşturulan veritabanı ilişkisel bir veritabanı ise, bu iki tablo birbiri ile bir şekilde ilişkilendirilebilir olması gerektedir. Eğer veritabanımız ilişkisel veri ilişkisel veritabanı mantığı üzerine bina edilecekse, temel olarak tablolar aşağıdaki 3 temel işlevi yerine getirmek zorundadır.

  1. Seçme: Herhangi bir tabloda yer alan bilgilerin tümü yada istenen kriterlere göre sıralı bir şekilde gösterilebilmelidir.
  2. İzdüşürme: Herhangi bir tabloda yer alan bilgilerin belli kolonları görüntülenebilmelidir.
  3. Birleştirme: İki yada fazla tabloda yer alan bilgiler tek bir tablo gibi sunulabilmelidir.

Bir veritabanı yönetim sistemi yukarıdaki 3 temel işlevi yerine getirmek zorundadır. Bu 3 kriterlerden her biri tek tek kullanılabildiği gibi, 3 bir arada kullanılabilir veya ikili kombinasyonlar halinde de kullanılabilir. Burada önemli olan veritabanın bir veritabanı yönetim sistemi tarafından SQL ile yönetilebilir olmasıdır. Böylece kullanıcı veritabanın bilgisayar ortamında fiziksel olarak dosyalama işlemleri bilme zorunluluğundan kurtulmuş olacaktır. Tüm bu süreç SQL ile izole edilmiş olur.

Veri Tabanı Normalizasyonu


Normalizasyon; veritabanı tasarım aşamasında çok önemli bir işlemdir. İlişkisel veritabanının tanımı ile birlikte ortaya atılmış ve kabul görmüş 5 normalizasyon kuralı vardır.

  1. Normalizasyon Kuralı: bir satırdaki alan yalnızca tek bir bilgi içerir.
  2. Normalizasyon Kuralı: bir tabloda anahtar olmayan her alan, birincil anahtar olarak tanımlı tüm alanlara bağlı olmak zorundadır. Ya da anahtar alanın birden fazla olduğu tablolarda, anahtar alanlardan sadece birine bağlı veriler tabloda yer almalı, ayrı bir tabloya taşınmalıdır. Bunun tersi de geçerlidir.
  3. Normalizasyon Kuralı: Bir tablo için anahtar olmayan bir alan, anahtarı olmayan başka hiç bir alana bağlı olamaz.
  4. Normalizasyon Kuralı: Birincil anahtar alanlar ile anahtarı olmayan alanlar arasında, birden fazla bağımsız bire-çok ilişkisine izin verilmez.
  5. Normalizasyon Kuralı: tekrarlamaları ortadan kaldırmak için her tablonun mümkün olduğunca küçük parçalara bölünmesi gerekir.

Veri tabanı normalizasyon kuralları, bir ilişkisel veritabanının tasarlanma aşamaları değil de ilişkisel veri tabanında yer alacak kayıtların ilişkisel veri tabanı ile uyumlu olup olmadığını denetlemeye yöneliktir. İlişkisel veritabanı tasarımında aşağıdaki dört özellik yerine getirilmelidir.

a) Veri tekrarı yapılmamalıdır.

b) Boş yer mümkün olduğunca az olmadır.

c) Veri bütünlüğü sağlanmadır.

d) Veriler, aralarında bir ilişki tanımlanmaya müsait olmalıdır.