MDX, OLAP cube(Multidimensional database)'lerde store edilmiş verileri manipulate etme ve sorgulama için kullanılan bir sorgulama dilidir. İlk olarak 1997 yılında Microsoft tarafından tanıtıldı.
MDX,yapı olarak SQL'e benzemektedir. SQL, sadece 2 boyutlu tablo verilerini işlemek için tasarlandı. MDX ise 1,2,3 veya daha fazla boyutlu veriyi işleyebilir. MDX deki herbir boyut axis olarak ifade edilir. MDX bir sorguda ilk 2 axis dimension'ı alias olarak column ve row'u kullanılır.
Aşağıda bazı axis ve axis'lerin alias'ları verilmiştir.
MDX'te kullanılan
- cube kavramı, sql'de bir tablo'yu
- level kavramı sql'de bir kolonu
- Measure kavramı sql'de numerik veya ayrık bir kolonu
- Member kavramı ise dimensional bir tablonun özel bir satır ve kolonunu
ifade eder.
SQL vs MDX
- SQL, bir tabloya select atar
- MDX bir cube select atar
- SQL ile bir veya birden fazla satır ve sütun döner
- MDX ile 0,1,2,3 daha fazla boyutlu veri döner
- SQL veriyi filtreler
- MDX veriyi slicer eder
- SQL, Relational database'i sorgular
- MDX, Multidimensional database'i sorgular
MDX'i kullanma, Multidimensional düşünmeyi gerektirir.
- Dimension'ların hiyerarşileri vardır.
- Hiyerarşilerin level'ları vardı.
- Level'lar ise member'lara sahiptir.
Aşağıda görüldüğü üzere örnek bir mdx sorgusu.
Yukardaki sorgunun çıktısı aşağıda gösterilmektedir.
MDX Syntax
1- Cube'teki tüm measure'ların toplamı herhangi bir dimension kırılımı olmadan getirme
Syntax: Select From [Your Cube Name] ;
Örnek: Select From [Adventure Works]
2-Cube'teki tüm müşterilerin adını kolon olarak getirme
Syntax: Select Dimension.Member on Column From [OLAPCubeName ]
veya
Select Dimension.Member on 0 From [OLAPCubeName ]
Örnek: Select [Customer].[Customer].[Customer] on 0
From [Adventure Works];
veya
Select [Customer].[Customer].[Customer] on columns
From [Adventure Works];
Yukardaki 2 sorgu da aşağıda görüldüğü üzere aynı sonucu döner. 1. sorguda axis 0 kullanılmış
2. sorguda axis 0'ın alias'ı olan columns kullanılmıştır. yani aynı ifadeler.
Yukardaki sorgular, herbir müşteriyi sütun olarak ifade eder ve her bir müşterinin
measure'larının toplam sonucunu verir.
3-Cube'teki her bir müşterinin internet satış fiyatlarını getirme
Syntax: Select [Measure] on Columns,[Dimension].[Members] on Rows From [Cube Name];veya
Select [Measure] on Rows,[Dimension].[Members] on Columns From [CubeName];
Örnek: Select [Measures].[Internet Sales Amount] on Columns,[Customer].[Customer]. [Customer] on Rows
From [Adventure Works];
Sorgunun çıktısı aşağıda gösterilmetedir.
4-.members hiyerarşi level'ını kullanma
Eğer bu hiyerarşi levelı kullanılırsa altındaki tüm değerleri getirir. Tüm boyutların toplamınıda dahil.Syntax: Select [Dimension].[Hierarchy].members on Columns from CubeName
veya
Select [Dimension].[Hierarchy].[Level].members on Columns from CubeName
Örnek: Select [Measures].[Internet Average Sales Amount] on Columns,
[Product].[Category].members on Rows
From [Adventure Works];
5-.Children hiyerarşi level'ını kullanma
Eğer bu hiyerarşi levelı kullanılırsa altındaki tüm değerleri getirir. Tüm boyutların toplamınıda hariç.Syntax: Select [Dimension].[Hierarchy].children on Columns from CubeName
veya
Select [Dimension].[Hierarchy].[Level].childrenon Columns from CubeName
Örnek: Select [Measures].[Internet Average Sales Amount] on Columns,
[Product].[Category].children on Rows
From [Adventure Works];
5-Tuple
Tuple, dimension member'larını kullanarak cube'te özel bir yeri ifade etmek için kullanılır.Dimension member'ları "{}" içine yazılır.
[Measures].[Internet Sales Amount] on columns from
[Adventure Works];
Daha fazla ayrıntılı örnek için aşağıdaki linkleri ziyaret edebilirsiniz.
http://www.codeproject.com/Articles/710387/Learn-to-Write-Custom-MDX-Query-First-Time
http://support.sas.com/documentation/cdl/en/mdxag/59575/HTML/default/viewer.htm#a002423079.htm
0 yorum:
Yorum Gönder