Set İşlevlerini Kullanma

Bir küme fonksiyonu, bir boyut, hiyerarşi, seviye veya bu nesneler içindeki üyelerin mutlak ve göreli konumlarını dolaşarak kümeleri çeşitli şekillerde oluşturarak bir küme alır.

Üye fonksiyonları ve duple fonksiyonları gibi küme fonksiyonları, Analiz Hizmetlerinde bulunan çok boyutlu yapıların müzakere edilmesinde gereklidir. Küme fonksiyonları, çok boyutlu ifadeler (MDX) sorgularından sonuç elde etmek için de gereklidir çünkü küme ifadeleri bir MDX sorgusunun eksenlerini tanımlar.

En yaygın küme fonksiyonlarından biri, bir boyut, hiyerarşi veya seviyeden tüm üyeleri içeren bir kümeyi alan Üyeler (Küme) (MDX) fonksiyonudur. Aşağıda, bir sorgu içinde kullanımına bir örnek verilmiştir:

SELECT  
//Returns all of the members on the Measures dimension  
[Measures].MEMBERS  
ON Columns,  
//Returns all of the members on the Calendar Year level of the Calendar Year Hierarchy  
//on the Date dimension  
[Date].[Calendar Year].[Calendar Year].MEMBERS  
ON Rows  
FROM [Adventure Works]  

Yaygın kullanılan bir diğer fonksiyon ise Crossjoin (MDX) fonksiyonudur. Kendisine parametre olarak aktarılan kümelerin kartezyen çarpımını temsil eden bir küme döner. Pratikte bu fonksiyon, sorgularda 'iç içe girmiş' veya 'çapraz tablalı' eksenler oluşturmanızı sağlar:

SELECT  
//Returns all of the members on the Measures dimension  
[Measures].MEMBERS  
ON Columns,  
//Returns a set containing every combination of all of the members  
//on the Calendar Year level of the Calendar Year Hierarchy  
//on the Date dimension and all of the members on the Category level  
//of the Category hierarchy on the Product dimension  
Crossjoin(  
[Date].[Calendar Year].[Calendar Year].MEMBERS,  
[Product].[Category].[Category].MEMBERS)  
ON Rows  
FROM [Adventure Works]  

Descendants (MDX) fonksiyonu Çocuklar fonksiyonuna benzer ama daha güçlüdür. Hiyerarşide herhangi bir üyenin soyundan gelenleri bir veya daha fazla seviyede geri getirir:

SELECT

[Ölçüler]. [İnternet Satış Tutarı]

ON sütunları,

Takvim Yılı altındaki tüm Tarihleri içeren bir set döndürür

2004 tarih boyutunun takvim hiyerarşisinde

SOYUNDAN GELENLER(

[Tarih]. [Takvim]. [Takvim yılı].&[2004]

, [Tarih]. [Takvim]. [Tarih])

ON Sıraları

[Adventure Works] TARAFINDAN

Sıra (MDX) fonksiyonu, bir kümenin içeriğini belirli bir sayısal ifadeye göre artan veya azalan sırayla sıralamanızı sağlar. Aşağıdaki sorgu, önceki sorgudaki satırlarda da aynı üyeleri döndürür, ancak artık onları İnternet Satış Miktarı ölçüsüne göre sıralar:

SELECT  
[Measures].[Internet Sales Amount]  
ON Columns,  
//Returns a set containing all of the Dates beneath Calendar Year  
//2004 in the Calendar hierarchy of the Date dimension  
//ordered by Internet Sales Amount  
ORDER(  
DESCENDANTS(  
[Date].[Calendar].[Calendar Year].&[2004]  
, [Date].[Calendar].[Date])  
, [Measures].[Internet Sales Amount], BDESC)  
ON Rows  
FROM [Adventure Works]  

Bu sorgu ayrıca, bir küme fonksiyonu olan Descendants'tan geri dönen kümenin parametre olarak başka bir küme fonksiyonu olan Order'a nasıl iletilebileceğini gösterir.

Belirli kriterlere göre bir kümeni filtrelemek sorgu yazarken çok faydalıdır ve bu amaçla aşağıdaki örnekte gösterildiği gibi Filtre (MDX) fonksiyonunu kullanabilirsiniz:

SELECT  
[Measures].[Internet Sales Amount]  
ON Columns,  
//Returns a set containing all of the Dates beneath Calendar Year  
//2004 in the Calendar hierarchy of the Date dimension  
//where Internet Sales Amount is greater than $70000  
FILTER(  
DESCENDANTS(  
[Date].[Calendar].[Calendar Year].&[2004]  
, [Date].[Calendar].[Date])  
, [Measures].[Internet Sales Amount]>70000)  
ON Rows  
FROM [Adventure Works]  

Bir kümeni başka şekillerde filtrelemenize olanak tanıyan daha sofistike fonksiyonlar da mevcuttur. Örneğin, aşağıdaki sorgu, TopCount (MDX) fonksiyonunun bir kümedeki en üst n öğeyi döndürdüğünü gösterir:

SELECT  
[Measures].[Internet Sales Amount]  
ON Columns,  
//Returns a set containing the top 10 Dates beneath Calendar Year  
//2004 in the Calendar hierarchy of the Date dimension by Internet Sales Amount  
TOPCOUNT(  
DESCENDANTS(  
[Date].[Calendar].[Calendar Year].&[2004]  
, [Date].[Calendar].[Date])  
,10, [Measures].[Internet Sales Amount])  
ON Rows  
FROM [Adventure Works]  

Son olarak, Intersect (MDX),Union (MDX) ve Except (MDX) fonksiyonları gibi fonksiyonlarla birçok mantıksal küme işlemi gerçekleştirilebilir. Aşağıdaki sorgu, son iki fonksiyonun örneklerini gösterir:

SELECT  
//Returns a set containing the Measures Internet Sales Amount, Internet Tax Amount and  
//Internet Total Product Cost  
UNION(  
{[Measures].[Internet Sales Amount], [Measures].[Internet Tax Amount]}  
, {[Measures].[Internet Total Product Cost]}  
)  
ON Columns,  
//Returns a set containing all of the Dates beneath Calendar Year  
//2004 in the Calendar hierarchy of the Date dimension  
//except the January 1st 2004  
EXCEPT(  
DESCENDANTS(  
[Date].[Calendar].[Calendar Year].&[2004]  
, [Date].[Calendar].[Date])  
,{[Date].[Calendar].[Date].&[915]})  
ON Rows  
FROM [Adventure Works]