13.02.2009

MDX ve SCOPE

Problem su:

Elimizde bir veri seti var, ve biz bu veri setinden bir measure olursturmak istiyoruz. Ancak soyle bir problem var bu measure farkli seviyelerde (granuality) farkli hesaplaniyor.

Ornegin veri yapimiz soyle olsun.

Product Dim
Business
Commodity
ItemNo

Customer Dim
CustomerID

factTable Item, Date, Customer, Sales

Ve buradan soyle bir yere olasmaya calisalim.

Lets say
---For Item
Select ItemNo, Sum(Sales)*2 as M1
From factTable
Group By ItemNo

--For Customer
Select CustomerID, Sum (Sales) * 3 M2
From factTable
Group By ItemNo

--For atomic level
Select ItemNo, CustomerID, Sales * 4 M3
From factTable


ve bu D1'in toplami da BI sistemimizdeki yeni mesaure'miz olsun.

Ulasmak istedigim yer her ozet seviyesi icin yeni bir Measure (M1,M2,M3) yaratmak degil sadece bir Measure (M1) yaratip bunu secilen seviyeye gore dogru ozet tablodan getirmek.

Soyle bir yaklasimla sonucu cozebildim.

1. Once her bir seviye icin bir Mesaure olusturalim

M1= M1 From Item Level
M2 = M2 From Customer Level
M3 = M3 From factTable

2. Simde de bu ucunu bir araya getircek bir M4 olusturalim

Create Member Measures.M4 As NULL

Scope (Measures.M4)
this = M3
Scope (Item, Measures.M4)
this = M1
end Scope
Scope (Customer, Measures.M4)
this = M2
end Scope
End Scope

boyle biseyler syntax dogru degil yaklasimi gostermek icin psudo olarak yazilmistir.

kolay gelsin,

Hiç yorum yok: