SSAS - Date Dimension Olusturma
SQL Server Analysis Service projeleri gerek son kullanıcının taleplerine çok hızlı yanıt verebilmesi, gerek verilere çok boyutlu bakabilme özelliği, gerek iş dünyasının vazgeçilmezi Excel ile doğrudan çalışabilmesi ve daha saymakla bitiremeyeceğimiz birçok özelliği ile aslında Business Intelligence projelerinin vazgeçilmezi durumunda. Özellikle düzgün bir veriambarı üzerinde çalışan Analysis Services projeleri son kullanıcıya sağladığı anlık yanıt vermesi ile IT çalışanlarının (veya raporlama uzmanlarının) üzerinden yoğun derecede iş yükünü almaktadır. Daha önceki yazılarımızda belirtmiş olduğumuz gibi (Business Intelligence Projelerinin Temel Elementleri – 1 http://www.sqlserveronculeri.com/1/Article/504/business-intelligence-projelerinin-temel-elementleri---1.aspx) SSAS projelerinin ana konularından birisi Dimensionlar’dır.
Hesaplanmasını planladığımız ölçüm alanlarına farklı boyuttan bakmamızı sağlayacak olan Dimension’ların tüm projelerde olmazsa olmazı Tarih boyutudur. Veritabanımızda tarihlerle ilgili bir tablo olmayabilir. SSAS projesinde hazır templateler kullanarak bu tabloyu oluşturabiliriz. SSAS Projesinde Solution Explorer bölümünde New Dimension sekmesini seçtikten sonra karşımıza aşağıdaki gibi bir ekran gelecektir. Buradan Date Template seçeneğini seçelim.

Sonrasında bize takvimimizin hangi tarihten başlayacağını soracaktır. OLAP küpümüzde yer alacak veriler hangi zaman diliminde başlıyorsa ona göre gerekli ayarlamaları yapalım. Haftanın ilk günü ne olacak? Burada projeyi geliştirmekte olduğumuz ülke ve kullanıcılara göre değişiklik gösterebilir. Özellikle EMEA ülkelerine baktığımızda Pazar günü (veya kimilerinde Cumartesi) haftanın ilk günü olabilmektedir. Verilerimize tarihe bağlı olarak hangi periyotlarda bakmak istiyorsak o alanları seçelim.

Normal şartlar altında takvim dediğimizde aklımıza sadece günlük hayatta kullandığımız takvim gelmektedir. Fakat bir şirketin bu takvim dışında kullanmakta olduğu takvimler olabilir. Örneğin tekstil üzerine iş yapan bir firmaysanız sezonlara göre (FW 2012 Fall – winter) takvim tarihleriniz farklılık gösterebilir. Veya Global bir şirketseniz ve tek bir finansal takvim kullanıyorsanız muhtemelen Finans departmanı yetkililerinin yılın ilk günü dediğinde kastettiği tarih 01 Ocak olmayabilir. Bir sonraki sekmede normal takvimimizin yanı sıra kullanmak istediğiniz başka takvim seçenekleri varsa onları seçerek gerekli düzenlemeleri yapabilirsiniz.

Aşağıda yer alan (Compeleting The Wizard) penceresinde aslında Analysis Services projesi için gerçekleşecek Tarih Boyutumuzun öğeleri ve hiyerarşileri yer almaktadır. Burada dikkat edilmesi gereken nokta eğer OLTP sistemimizde tarih ile ilgili tablonun oluşturulmasını ve bu tablonun içeriğinin dolu olmasını istiyorsak “Generate Schema Now” seçeneğini seçili duruma getirmeliyiz. Bu aşamadan sonraysa bize tablonun oluşturulması için connection gibi bilgilerin sorulduğu ekranlar çıkacaktır.

Gerekli aşamaları tamamladığımızda Analysis Services projemizde tarih boyutumuzu oluşturmanın yanı sıra veritabanımızda ilgili tablo ve veriler yer alacaktır.

Bu klasik tabloda sizden değişiklik yapılması talepleri gelebilir. Örneğin Date_Name alanındaki verilerin formatının “Gün Adı, Ay Adı, Gün, Yıl” olması değil kullanıcıların daha alışık olduğu format olan Gün, Ay, Yıl olması talep edilebilir. Bunun gibi değişiklikleri yaparken veya hazır otomatik gelen Date Dimension yerine kendi oluşturduğunuz tarih tablosunun referans alınmasını istediğinizde sıralama ile ilgili sıkıntılarla karşılaşabilirsiniz. Örneğin Date_Name alanının metin tipinde tutulmasından dolayı 10 ile başlayan günün ayın 2’sinden önce yazılması gibi. Veya Quarter bazında sıralama yaptığınızda ilk ayın April gözükmesi gibi.

Bu durum IT çalışanları için bir sorun gibi gözükmemesine rağmen aslına bakarsanız tüm rapor ve planlamalarını OLAP küpleri (ve bir Excel dosyası) üzerine kuran diğer departmanlarda çalışanlar için oldukça sıkıntılı bir durum olabilir ve bir taleple karşınıza gelebilirler.
Bunun için yapmanız gereken Analysis Services projesinde yer alan dimensions kısmından Attribute Relationships kısmına gelerek sıkıntılı olduğunu (sıralama problemi) gördüğünüz yere gelerek değiştirmenizdir. Ay isimlerinin doğru sıralanması ile ilgili örnek verecek olursak Edit Attribute Relationship dedikten sonra Name alanını Month Name ve Related Attribute alanını Month Number of Year yapınız.
Attribute ve Hiyerarşilerinizin bulunduğu kısımda Month Name’in özelliklerine gelerek Order By seçeneğini AttributeKey ve OrderByAttribute özelliğini Month Number Of Year yaparak tekrar dimension’ı process ettiğinizde sorununuz çözülecektir.