Analysis Services - Küp Boyutları Oluşturma (Cube Dimensions)

18. Aralık 2010

Aşağıdaki resimde görebileceğimiz gibi Business Intelligence Development Studio'da bir Analysis Services projesi açar isek Solution Explorer'da yaratabileceğimiz nesneler belirmekte. Bunlardan dirincisi olan Data Sources sekmesinde kullanmak istediğimiz veri kaynaklarını belirleyebiliriz. Veri kaynağı olarak kullanacağımız veri tabanları genellikle OLTP sisteminden elde edilerek düzenlenen veri ambarları olacaktır. OLTP kaynaklarına göre veri ambarları daha az sıklıkla güncellenen fakat verinin daha kolay işlenmesi ve analizi açısından düşünülerek tasarlanmış veri tabanlarıdır. Bu örnekte Microsoft'un örnek veri ambarı olan AdventureWorksDW kullanılacak.

Data Source View olarak tanımladığımız alanda ise, bayi satışlarının bulunduğu ,DimProductCategory ve DimProductSubCategory tabloları tanımdan hariç tutulmak üzere, FactResellerSales tablosu ve buna ilişkili olan diğer tabloları bir yıldız şeması (Star Schema) oluşturacak şekilde View nesnemize ekledik. Birbirlerine zincirleme bir şekilde bağlı olan DimProduct, DimProductSubCategory ve DimProductCategory tabloları arasındaki ilişki ise literatürde snowflake olan isimlendirilmektedir.

Analysis Services Star Schema

 


Genel bir başlangıcın ardından yeni bir Dimension nesnesini nasıl oluşturacağımıza geçebiliriz. Bu konuda resimleri kullanmak anlamamıza yardımcı olacak ve yazıyı biraz daha zevkli kılacaktır.

1. İlk adım olarak Solution Explorer içinde Dimensions klasörüne sağ tıklayarak New Dimension'ı seçiyoruz.

   

 2. New Dimension'ı seçtikten sonra karşımıza bir sihirbaz çıkmakta. Bu sihirbazda boyutu nasıl oluşturacağımızı seçmemiz gerekiyor. Veri ambarından çektiğimiz tablolarla işlem yapacağımızdan Use an existing table seçerek Next diyoruz.

   

 3. Var olan tablolarda işlem yapmak için ilk önce DataSource View neslelerinden hangisinde olan bir tablo üzerinde olduğunu sormakta bu işlemde sadece bir adet data source view var ve onu seçiyoruz. Ardından hangi kolonu kullanacağımızı giriyoruz. Bu işlemler için Product bu boyutta Product tablosunu seçeceğiz. Product tablosunu seçtikten sonra Dimension'da kullanılacak Key Column ( Anahtar Kolon ) olarak bize normalde tabloda kullanılan Primary Key kolonunu önermekte. Şimdiye kadar rastlamadığım özel bir durum haricinde, genellikte tabloda kullanılan anahtar kolonun kullanılması her zaman yarırımıza olacaktır. Diğer bir seçenek ise en altta bulunan Name Column özelliğidir. Bu ProductKey için hangi kolonun görünen isim olduğunu belirlemek için kullanılır. Bu noktada raporlarımızda 'Bike0024' gibi bir değer görmek yerine direkt olarak o anahtara sahip olan ürünün ismini görmek daha anlaşılır olacağı üzere Name Column olarak EnglishProductName kolonunu seçebiliriz.

 4. Bu basamakta ise seçtiğimiz kolonun Data Source View'da ilişkisi olan tabloları bize kullanıp kullanmayacağımızı belirtmemiz üzere listelemekte. Product boyutu için hiyerarşi oluşturacağımızdan her bir ürünün bağlı oldukları ürün alt grupları ve gruplarını bilmemiz bizim için yararlı olacaktır. Bu yüzden ProductSubCategory ve ProductCategory kolonlarındaki ilişkili olduğu değerleri de işaretleyerek bir sonraki adıma geçiyoruz.

 5. Bu adımda ise boyutumuzun sahip olacağı attribute (öznitelik) leri diğer bir deyişle Product boyutu için ulaşmak isteyebileceğimiz bilgileri seçiyoruz. Bu örnekte ingilizce olan kolonlar haricindekileri sildim. Ayrıca pencerede görünmeyen fakat ProductCategory ve ProductSubCategory kolonlarından gelen Key kolonlarınıda seçerek Next ve ardından Finish'e tıklayarak basit haldeki boyutumuzu oluşturuyoruz.

 6. Product boyutunda (dimension) her bir öznitelik (attribute)in Properties penceresinde de görülebileceği gibi 'Key Columns' ve 'Name Columns' adlarını taşıyan özellikleri vardır. Bu özelliklerden Key Columns bahsi geçen özniteliğin hangi kolona göre sıralanarak, süzüleceğini belirtir. Key Columns bir koleksiyon nesnesine referans göndermektedir. Koleksiyonda bir adet kolon belirtilir ise Name Column öntanımlı olarak Key Column'da geçen değeri alacaktır. Birden fazla olduğu durumlarda ise Name Column özelliği için bir görünen etiket olarak bir kolon seçmemiz gerekecektir. Gördüğünüz üzere ProductCategoryKey özniteliği için ProductCategoryKey kolonu Key Column olarak belirlenmiş durumda. Fakat oluşturduğumuz hiyerarşilerde kategorilerin id numaralarını görmek bizi pek ilgilendirmeyecektir. Buradaki görselliği düzeltebilmek adına aşağıdaki gibi NameColumn özelliğini 'EnglishProductCategoryName' olarak ayarlıyoruz. Aynı işlemleri ProductSubCategoryKey için siz tekrar etmeliyiz. Böylece 1,2,3 gibi rakamlardan ziyade Bikes, Accesories, Clothing gibi kategori isimlerini görmüş olacağız.

7. Aşağıdaki resimde oluşturulan bir özniteliğin (attribute) dizayn kısmı görüntülenmekte. En solda Attributes bölümünde genel yapı gösterilirken bir yanında bulunan Hierarchies kısmında ise oluşturduğumuz hiyerarşileri görebiliriz. Öznitelikleri cekip sürüklediğimizde bu kolay bir şekilde oluşturulmakta ve her bir seviyenin altında ok işaretleriyle hangi kolonla ilişkili olduklarıda gösterilmektedir.

  Analysis Services Dimension Hierarchy

8. KeyColumns ve NameColumn özelliklerini mantığa uygun bir şekilde değiştirmek için daha önceki anlatılan aşamaları takip edilerek eklenen bir Time boyutunun CalendarQuarter özniteliğinin daha perrformanslı çalışabilmesi için aşağıdaki gibi CalendarYear ilede süzülmesini ayarlayabiliriz. Öntanımlı olarak seçtiğimiz bu anahtarlara göre veriler sıralanacaktır. CalendarYear ve Quarter için verilerimiz sayısal olduğundan sıralama bizim için problem yaratmayacaktır. Fakat EnglishMonthName özniteliği (Dimension Attribute) için aynı şeyi söyleyemeyeceğiz. Aylar alfabetik olarak ilerlemediği için EnglishMonthName'i anahtar kolon olarak seçmemiz verilerin sırasında karışıklığa sebep olacaktır. Bu yüzden EnglishMonthName özniteliği için CalendarYear yanında tablomuzda bulunan MonthNumberOfYear kolonunu ekleyeceğiz. Böylece düzgün bir sıralama elde edebiliriz.

 

 

9. Time boyutu için KeyColumns dizisine birden fazla kolon eklediğimiz üzere NameColumn seçmediğimizi anımsatacak bir hata verecektir. Adventure Works DW data source view'a girersek her bir tablo için yeni kolonlar tasarlayabilmekteyiz. Aşağıdaki gibi New Named Calculation seçildikten sonra MonthLabel ve QuarterLabel adında NameColumn olarak kullanmak için kolon oluşturuyoruz. MonthLabel için yazılan kodu aşağıda görebilirsiniz. QuarterLabel'ı ise MonthLabel kodundan EnglishMonthName kısmını çıkararak elde edebiliriz.

 

 

10. Daha sonra oluşturduğumuz kolonları CalendarQuarter ve EnglishMonthName özniteliklerinin NameColumn özelliğine atıyoruz.

 

11. AdventureWorks DW veri tabanındaki DimProduct ile DimProductCategory ve DimProductSubCategory tabloların arasında ilişkiler olduğu üzere bir önceki yaptığımız Product boyutunun hiyerarşisinde her bir öznitelik arasındaki ilişkide problem yaşamamıştık, Intelligence Studio var olan ilişkileri göz önüne alarak ilişkileri kendisi tanımlamıştı. Fakat DimTime tablosunda her bir kolon arasında Primary ve Foreign anahtarları belirlenmediğinden otomatik olarak algılanamamaktadır. Bu yüzden tasarımda 'Attribute Relationships' sekmesine gelerek kendimiz ilişkileri düzenlemek durumundayız. Bu noktada en solda Time Key olacak şekilde bir doğrultu oluşturarak Calender Year özelliğine kadar ilişkileri oluşturmalıyız. Aşağıda görüldüğü gibi ilişkiyi belirten oklar üzerinde sağ tıklayarak Edit Attribute Relationship seçeneğiyle bu işlemleri gerçekleştirmekteyiz. EnglishMonthName -> CalendarQuarter ile Calender Quarter ise Calendar Year ile ilişkili olmak durumundadır. 
 

12. İşlemlerimizi tamamladığımızda Browser sekmesinden aşağıdaki gibi oluşturduğumuz yapı ve getirdiği verilere göz atabiliriz.

 Sql Server Analysis Services Dimension konusu hakkında anlatacaklarımız şimdilik bu kadar. Faydalı olması dileğiyle...

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

SQL Server , ,

Yorumlar

Yorum ekle


(Gravatar simgesini gösterecek)  

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading