Menggunakan Fungsi Himpunan

Fungsi himpunan mengambil himpunan dari dimensi, hierarki, tingkat, atau dengan menelusuri lokasi absolut dan relatif anggota dalam objek-objek tersebut, membangun himpunan dengan berbagai cara.

Fungsi himpunan, seperti fungsi anggota dan fungsi tuple, sangat penting untuk menavigasi struktur multidimensi yang ditemukan dalam Layanan Analisis. Fungsi himpunan juga penting untuk memperoleh hasil dari kueri Ekspresi Multidimensi (MDX) karena ekspresi himpunan mendefinisikan sumbu dari kueri MDX.

Salah satu fungsi himpunan yang paling umum adalah fungsi Members (Set) (MDX), yang mengambil himpunan yang berisi semua anggota dari dimensi, hierarki, atau tingkat. Berikut adalah contoh penggunaannya dalam sebuah kueri:

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]  

Fungsi lain yang umum digunakan adalah fungsi Crossjoin (MDX). Ia mengembalikan himpunan tuple yang mewakili produk kartesian dari himpunan yang dimasukkan ke dalamnya sebagai parameter. Secara praktis, fungsi ini memungkinkan Anda membuat sumbu 'bersarang' atau 'crosstabbed' dalam kueri:

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]  

Fungsi Descendants (MDX) mirip dengan fungsi Anak, tetapi lebih kuat. Ia mengembalikan keturunan dari anggota mana pun pada satu atau lebih tingkat dalam hierarki:

SELECT

[Pengukuran]. [Jumlah Penjualan Internet]

Kolom ON,

Mengembalikan himpunan yang berisi semua Tanggal di bawah Tahun Kalender

2004 dalam hierarki Kalender dimensi Tanggal

KETURUNAN(

[Date]. [Kalender]. [Tahun Kalender].&[2004]

, [Tanggal]. [Kalender]. [Tanggal])

ON Rows

DARI [Adventure Works]

Fungsi Order (MDX) memungkinkan Anda mengurutkan isi himpunan dalam urutan naik atau menurun sesuai dengan ekspresi numerik tertentu. Kueri berikut mengembalikan anggota yang sama pada baris seperti kueri sebelumnya, tetapi sekarang mengurutkannya berdasarkan ukuran Jumlah Penjualan Internet:

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]  

Kueri ini juga menggambarkan bagaimana himpunan yang dikembalikan dari satu fungsi himpunan, Descendants, dapat diteruskan sebagai parameter ke fungsi himpunan lain, Order.

Memfilter himpunan berdasarkan kriteria tertentu sangat berguna saat menulis kueri, dan untuk tujuan ini Anda dapat menggunakan fungsi Filter (MDX), seperti yang ditunjukkan pada contoh berikut:

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]  

Ada fungsi lain yang lebih canggih yang memungkinkan Anda memfilter sebuah set dengan cara lain. Sebagai contoh, kueri berikut menunjukkan fungsi TopCount (MDX) mengembalikan n item teratas dalam satu set:

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]  

Akhirnya, dimungkinkan untuk melakukan sejumlah operasi himpunan logis menggunakan fungsi seperti fungsi Intersect (MDX),Union (MDX), dan Except (MDX). Kueri berikut menunjukkan contoh dua fungsi terakhir:

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]