Utilizzo delle funzioni sui setUsing Set Functions

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Una funzione sui set recupera un set da una dimensione, da una gerarchia, da un livello o attraversando i percorsi assoluti e relativi dei membri di tali oggetti, costruendo i set in vari modi.A set function retrieves a set from a dimension, hierarchy, level, or by traversing the absolute and relative locations of members within these objects, constructing sets in a variety of ways.

Le funzioni sui set, come le funzioni membro e le funzioni di tupla, sono essenziali per la negoziazione delle strutture multidimensionali utilizzate in Analysis Services.Set functions, like member functions and tuple functions, are essential to negotiating the multidimensional structures found in Analysis Services. Le funzioni sui set sono essenziali anche per ottenere risultati dalle query MDX, perché le espressioni set definiscono gli assi di una query MDX.Set functions are also essential to obtaining results from Multidimensional Expressions (MDX) queries because set expressions define the axes of an MDX query.

Una delle funzioni set più comune è il membri ( Set ) ( MDX ) (funzione), che recupera un set contenente tutti i membri di una dimensione, gerarchia o livello.One of the most common set functions is the Members (Set) (MDX) function, which retrieves a set containing all of the members from a dimension, hierarchy, or level. Nell'esempio seguente viene illustrato l'utilizzo di questa funzione all'interno di una query:The following is an example of its use within a 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]

Un'altra funzione di uso comune è il Crossjoin ( MDX ) (funzione).Another commonly used function is the Crossjoin (MDX) function. Questa funzione restituisce un set di tuple che rappresenta il prodotto cartesiano dei set passati come parametri.It returns a set of tuples representing the cartesian product of the sets passed into it as parameters. In termini pratici, consente di creare assi "nidificati" o "con campi incrociati" nelle query:In practical terms, this function enables you to create 'nested' or 'crosstabbed' axes in queries:

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]

Il discendenti ( MDX ) funzione è simile di figli funzionare, ma è più potente.The Descendants (MDX) function is similar the Children function, but is more powerful. Restituisce i discendenti di qualsiasi membro a uno o più livelli in una gerarchia:It returns the descendants of any member at one or more levels in a hierarchy:

SELECTSELECT

[Measures].[Internet Sales Amount][Measures].[Internet Sales Amount]

ON Columns,ON Columns,

//Restituisce un set contenente tutte le date comprese nel calendario//Returns a set containing all of the Dates beneath Calendar Year

//2004 nella gerarchia Calendar della dimensione Date//2004 in the Calendar hierarchy of the Date dimension

DESCENDANTS(DESCENDANTS(

[Date].[Calendar].[Calendar Year].&[2004][Date].[Calendar].[Calendar Year].&[2004]

, [Date].[Calendar].[Date]), [Date].[Calendar].[Date])

ON RowsON Rows

FROM [Adventure Works]FROM [Adventure Works]

Il ordine ( MDX ) funzione consente di ordinare il contenuto di un set in ordine crescente o decrescente in base a una particolare espressione numerica.The Order (MDX) function enables you to order the contents of a set in ascending or descending order according to a particular numeric expression. La query seguente restituisce gli stessi membri nelle righe della query precedente, ma in questo caso i membri vengono ordinati in base alla misura Internet Sales Amount:The following query returns the same members on rows as the previous query, but now orders them by the Internet Sales Amount measure:

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]

Questa query illustra anche come passare come parametro il set restituito da una funzione sui set (Descendants) a un'altra funzione sui set (Order).This query also illustrates how the set returned from one set function, Descendants, can be passed as a parameter to another set function, Order.

Filtraggio di un set in base a determinati criteri si rivela utile quando la scrittura di query e per questo scopo è possibile utilizzare il filtro ( MDX ) funzione, come illustrato nell'esempio seguente:Filtering a set according to certain criteria is very useful when writing queries, and for this purpose you can use the Filter (MDX) function, as shown in the following example:

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]

Esistono altre funzioni più sofisticate che consentono di applicare filtri a un set con modalità diverse.Other, more sophisticated functions exist that allow you to filter a set in other ways. Ad esempio, la query seguente viene illustrato il TopCount ( MDX ) funzione restituisce i primi n elementi in un set:For example, the following query shows the TopCount (MDX) function returns the top n items in a 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]

Infine è possibile eseguire una serie di operazioni logiche sui set utilizzando funzioni quali Intersect ( MDX ) , Unione ( MDX ) e tranne ( MDX ) funzioni.Finally it is possible to perform a number of logical set operations using functions such as Intersect (MDX), Union (MDX) and Except (MDX) functions. La query seguente illustra l’utilizzo delle ultime due funzioni:The following query shows examples of the latter two functions:

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]

Vedere ancheSee Also

Funzioni ( La sintassi MDX ) Functions (MDX Syntax)
Utilizzo delle funzioni membro Using Member Functions
Utilizzo di funzioni di tuplaUsing Tuple Functions