次の方法で共有


集合関数の使用

集合関数は、ディメンション、階層、レベルからセットを取得します。あるいは、それらのオブジェクト内でのメンバーの絶対位置および相対位置をトラバースすることにより、さまざまな方法でセットを構築します。

集合関数は、メンバー関数や組関数と同様に、Analysis Services で使用される多次元構造を操作するために不可欠です。 さらに、セット式が多次元式 (MDX) クエリの軸を定義するため、集合関数は MDX クエリから結果を得るうえでも不可欠です。

最も一般的な集合関数の 1 つに Members (セット) (MDX) 関数があります。この関数は、1 つのディメンション、階層、またはレベルのメンバーをすべて含むセットを取得します。 クエリ内でのこの関数の使用例を次に示します。

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]

一般的に使用されるもう 1 つの関数として、Crossjoin (MDX) 関数があります。 この関数は、パラメーターとして渡されるセットのデカルト積を表す組のセットを返します。 つまり、この関数を使用すると、クエリに "入れ子になった" 軸または "クロス集計された" 軸を作成できます。

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) 関数は、Children 関数と似ていますがより強力です。 この関数は、階層内の 1 つ以上のレベルにある任意のメンバーの子孫を返します。

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

DESCENDANTS(

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

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

ON Rows

FROM [Adventure Works]

Order (MDX) 関数を使用すると、特定の数値式に従って、セットの内容を昇順または降順で並べ替えることができます。 次のクエリでは、上記のクエリと同じ、行のメンバーを返しますが、ここでは Internet Sales Amount メジャーでこのメンバーを並べ替えます。

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]

このクエリでは、集合関数 Descendants から返されたセットをパラメーターとして別の集合関数 Order に渡す方法も示しています。

特定の条件に従ってセットにフィルターを適用することは、クエリを記述する場合に非常に役立ちます。このため、次の例に示すように、Filter (MDX) 関数を使用できます。

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]

また、他の方法でセットにフィルターを適用できるようにする、さらに高度な関数もあります。 たとえば、次のクエリでは、TopCount (MDX) 関数によってセット内の上位 n 個の項目が返されることを示しています。

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]

最後に、Intersect (MDX)Union (MDX)Except (MDX) などの関数を使用して、多数の論理的なセットの操作を実行することができます。 次のクエリでは、後者 2 つの関数の例を示します。

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]

関連項目

概念

関数 (MDX 構文)

メンバー関数の使用

組関数の使用