MDX’in gücüne bir örnek: Döngüler


Yine Wiley, MDX Solutions kitabından örnek:

SELECT
Filter (
[Time].[Quarter].Members,
Max (
[Time].CurrentMember.Children,
( [Time].CurrentMember
/ [Time].CurrentMember.PrevMember)
) >= 1.13
)
on axis(0)
FROM Sales
WHERE ([Measures].[Unit Sales], [Product].[Tools])

Bu sorgu, üyeleri içinde en az bir ayın önceki aya göre artışı % 13’ten fazla olan çeyrekleri seçiyor.

Bu seçimi gerçekleştirmek için iç içe döngüler açıyor. Biz her ne kadar sintaksta bu döngüleri görmesek de…

Önce Filter çeyrekler üzerinde bir döngü başlatıyor.

Max fonksiyonunun ilk argümanı olan CurrentMember bu çeyrekler üzerinde dönüyor.

Bu CurrentMember’a eklenmiş olan .Children aylar üzerinde yönü bir döngü başlatıyor. Max’ın ikinci argümanı olan oranda yer alan Time.CurrentMember bu aylar üzerinde dönüyor.

Benzer bir sorguyu SQL’de yazmak için cursorlarla ya da common table expressionlarla falan uğraşmanız gerekirdi.

Bu tür içiçe döngüler içeren yapıları MDX’te ‘döngü olarak bile düşünmeden’ sürekli olarak kullanıyorsunuz. Ama tabii MDX’i öğrenmek de hatırı sayılır bir emek gerektiriyor.

Bu yazı Genel içinde yayınlandı ve olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s