Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een verzamelingsfunctie haalt een verzameling op uit een dimensie, hiërarchie, niveau, of door de absolute en relatieve locaties van leden binnen deze objecten te doorlopen, waarbij verzamelingen op verschillende manieren worden geconstrueerd.
Verzamelfuncties, zoals lidfuncties en tuplefuncties, zijn essentieel om de multidimensionale structuren te onderhandelen die in Analysediensten voorkomen. Verzamelingsfuncties zijn ook essentieel om resultaten te verkrijgen van Multidimensionale Expressies (MDX)-zoekopdrachten, omdat verzamelingsexpressies de assen van een MDX-query definiëren.
Een van de meest voorkomende verzamelingsfuncties is de Members (Set) (MDX)- functie, die een verzameling ophaalt die alle leden bevat uit een dimensie, hiërarchie of niveau. Het volgende is een voorbeeld van het gebruik ervan binnen een query:
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]
Een andere veelgebruikte functie is de Crossjoin (MDX) -functie. Het geeft een verzameling tuples terug die het cartesisch product vertegenwoordigen van de verzamelingen die als parameters in het systeem zijn overgebracht. In praktische termen stelt deze functie je in staat om 'geneste' of 'kruistabbede' assen in queries te maken:
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]
De functie van Descendants (MDX) lijkt op de Kinderen-functie , maar is krachtiger. Het geeft de nakomelingen van elk lid op één of meer niveaus in een hiërarchie terug:
SELECT
[Maatregelen]. [Bedrag internetverkopen]
OP Kolommen,
Geeft een set terug met alle data onder het kalenderjaar
2004 in de kalenderhiërarchie van de datumdimensie
NAKOMELINGEN(
[Datum]. [Kalender]. [Kalenderjaar].&[2004]
, [Datum]. [Kalender]. [Datum])
ON Rows
VAN [Adventure Works]
De Order (MDX)- functie stelt je in staat om de inhoud van een set in oplopende of dalende volgorde te ordenen volgens een bepaalde numerieke expressie. De volgende query geeft dezelfde leden op rijen als de vorige zoekopdracht, maar ordent ze nu volgens de Internet Sales Amount-maat:
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]
Deze query illustreert ook hoe de verzameling die wordt teruggegeven van een verzamelingsfunctie, Descendants, als parameter kan worden doorgegeven aan een andere verzamelingsfunctie, Order.
Het filteren van een set volgens bepaalde criteria is erg nuttig bij het schrijven van queries, en hiervoor kun je de Filter (MDX)- functie gebruiken, zoals getoond in het volgende voorbeeld:
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]
Er bestaan andere, meer geavanceerde functies waarmee je een set op andere manieren kunt filteren. Bijvoorbeeld, de volgende query toont dat de TopCount (MDX) functie de top n items in een set teruggeeft:
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]
Ten slotte is het mogelijk om een aantal logische verzamelingsoperaties uit te voeren met functies zoals Intersect (MDX),Union (MDX) en Except (MDX) functies. De volgende query toont voorbeelden van de laatste twee functies:
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]