26 Haziran 2012 Salı

Slowly Changing Dimensions Nedir?

Yazan: Hüseyin Onur Özcan
Merhabalar
İş Zekasında sıklıkla kullanılan ancak amacı biraz karmaşık gelebilen bir konudan bahsetmek istiyorum.
Slowly changing Dimensions.
Bilindiği üzere veri ambarı dimension ve fact tablolarından oluşmaktadır. Dimension tablolarımız da zaman zaman verinin değişmesiyle beraber değişikliğe uğrar. Bu değişiklikleri kimi zaman saklamak önemsizken, kimi zaman saklamak çok önemli olabilir. Slowly changing dimensions genellikle değişimin oldukça nadir olduğu durumlarda kullanılır.

Slowly changing dimensions temel olarak üç kategoride incelenebilir.
1) Değişen verinin yalnızca son halinin saklanmasının gerekli olduğu durumlar
2) Verilerde değişiklik olduğundan eski kayıtların eski haliyle saklanması yenilerin yeni bir kayıtta saklanması. (Buna bir örnek verecek olursak, diyelim ki bir hastanede doçentimiz ve onun yaptığı ameliyatlar olsun. Bu doktor prof. ünvanı aldığında eski ameliyatlarını kaybetmek istemeyiz. Ancak prof. olduğunda da yeni ameliyatlı prof sıfatıyla tutmak isteriz)
3) Normal şartlar altında kullanılan bu maddede dimesionun belli bir attributeunun yanlızca son eski değerini (last old value) bilmek istediğimizde dimension tablosuna update etmeden önce son değeri kaydetmek amaçlı bir alan ekleyebiliriz.


Slowly changing dimensions nadiren değişen ve kıymetli olan değerler için kullanılmalı herşey için uygulanmamalıdır. Örneğin müşterinin adresi için slowly changing dimensions uygulanabilir ancak bir doğum tarihi değişikliğpi için saçma olacaktır.
Aynı dimension için farklı slowly changing dimensions uygulamaları da yapmak gerekebilir. Eğer aynı dimensions yaratılan farklı küpler tarafından kullanılıyorsa ETL diagramında bu konunun halledilmesi gerekir.

Şimdi de bu teorik bilgileri biraz daha pratiğe dökmeye çalışalım.
ETL de Slowly Changing Dimensions Eklediğimizde karşımıza çıkan Wizard'da gerekli ayarlamaları yapmamız gerekiyor.


Connection Manager'dan data source'u hangi dimension tablosuna uygulayacağımızı ve bu tablonun primary key( yada keylerini) seçiyoruz. İleri tuşuna basıyoruz.

Çıkan ekranda verilerimizi hangi kategoride değerlendirmek istediğimizi soruyor. İlk kısım (Fixed attribute) veriyi sabit tutup değişiklikleri hata olarak değerlendiriyor. İkinci kısım (Changing Attribute) yukarıda 1 olarak tanımlana, son kısım (Historical Attribute) ise yukarıda 2 olarak tanımlanan kategoriye giriyor. Hangisini yapmak istediğimize karar verdikten sonra dimension columnları seçip change typeı belirliyoruz.

Seçimlerimizi yapıp ileri dediğimizde çıkan ekranda fixed attribute çıktığında hata olarak değerlendirmeye bağlı olarak bu değiştirilmemesi gereken şey değişirse süreci dururup durdurmak istemediğimizi soruyor.
Alt kısımda ise changing attribute seçildiyse, değişime göre eşleşe tüm veriler üzerinde değişiklik isteyip istemediğimizi soruyor.
Bunlara da karar verip ileri tuşuna bastığımızda Inferred Dimension Members ile iligli bir kısım çıkar. Inferred Member henüz database'e yazılmamış dimension memberlara referans gösteren bir Fact Table olduğunda görülür. Veri database'e konulduğunda artık insert değil update işlemine uğrar. "Enable Inferred member Support" checkbox seçildiğinde ya bu inferred memberler başlangıçta null değeri alırlar yada bu kayıdın inferred member olması bir boolean değere bağlanır ve bu değer inferred member indicator altında seçilir.
İleri tuşuna basıldığında Özet bilgiler gelir ve Visual Studio kendi insert, update işlemlerini otomatik ayarlar.

Not: Slowly Changing Dimensions işleminde Delete işlemi otomamtik olarak oluşturulmaz.

Hiç yorum yok:

Yorum Gönder