TopPercent (MDX)
セットを降順に並べ替え、累積合計が指定した割合以上の最大値を持つタプルのセットを返します。
構文
TopPercent(Set_Expression, Percentage, Numeric_Expression)
引数
Set_Expression
セットを返す有効な多次元式 (MDX) 式。
Percentage
返されるタプルの割合を指定する有効な数値式。
重要
パーセンテージ は正の値である必要があります。負の値を指定すると、エラーが発生します。
Numeric_Expression
通常、数値を返すセル座標の多次元式 (MDX) 式である有効な数値式。
解説
TopPercent 関数は、指定したセットに対して評価された指定された数値式の合計を計算し、セットを降順に並べ替えます。 次に、合計値の累積割合が指定されている割合以上になるように、最も値の大きい方から要素を返します。 この関数は、累積合計が少なくとも指定されたパーセンテージであるセットの最小サブセットを返します。 要素は大きい方から順に返されます。
警告
Numeric_Expressionが負の値を返す場合、TopPercent は 1 行のみを返します。
この動作の詳細なプレゼンテーションについては、2 番目の例を参照してください。
重要
BottomPercent 関数と同様に、TopPercent 関数は常に階層を中断します。
例
A. TopPercent を返す
次の例では、Bike カテゴリのリセラーの売上の上位 10% を占めるのに役立つ最適な都市を返します。 結果は、売上の値が最も高い都市から始まり、降順で並べ替えられます。
SELECT [Measures].[Reseller Sales Amount] ON 0,
TopPercent
({[Geography].[Geography].[City].Members}
, 10
, [Measures].[Reseller Sales Amount]
) ON 1
FROM [Adventure Works]
WHERE([Product].[Product Categories].[Bikes])
上記の式では、次の結果が生成されます。
City | Reseller Sales Amount |
---|---|
Toronto | $3,508,904.84 |
London | $1,521,530.09 |
Seattle | $1,209,418.16 |
Paris | $1,170,425.18 |
元のデータ セットは、次のクエリを使用して取得でき、588 行を返します。
SELECT [Measures].[Reseller Sales Amount] ON 0,
Order
({[Geography].[Geography].[City].Members}
, [Measures].[Reseller Sales Amount]
, BDESC
) ON 1
FROM [Adventure Works]
WHERE([Product].[Product Categories].[Bikes])
B. 負の値の影響を理解する
次のチュートリアルは、 Numeric_Expressionの負の値の影響を理解するのに役立ちます。 まず、この動作を実行できる、いくつかのコンテキストを構築します。
次のクエリでは、リセラー 'Sales Amount'、'Total Product Cost'、および 'Gross Profit' のテーブルが、利益の降順で並べ替えられて返されます。 利益には負の値しかないので、損失の少ないものが上位に表示されます。
SELECT { [Measures].[Reseller Sales Amount], [Measures].[Reseller Total Product Cost], [Measures].[Reseller Gross Profit] } ON columns
, ORDER( [Product].[Product Categories].[Bikes].[Touring Bikes].children, [Measures].[Reseller Gross Profit], BDESC ) ON rows
FROM [Adventure Works]
上記のクエリは、次の結果を返します。見やすくするために、中間部の行は削除してあります。
ツーリング バイク | Reseller Sales Amount | Reseller Total Product Cost | Reseller Gross Profit |
---|---|---|---|
Touring-2000 ブルー、50 | $157,444.56 | $163,112.57 | ($5,668.01) |
Touring-2000 ブルー、46 | $321,027.03 | $333,021.50 | ($11,994.47) |
Touring-3000 Blue, 62 | $87,773.61 | $100,133.52 | ($12,359.91) |
... | ... | ... | ... |
Touring-1000 イエロー、46 | $1,016,312.83 | $1,234,454.27 | ($218,141.44) |
Touring-1000 Yellow, 60 | $1,184,363.30 | $1,443,407.51 | ($259,044.21) |
このとき、利益で上位 100% の自転車を提示するように求められた場合、クエリは次のように記述されます。
SELECT { [Measures].[Reseller Sales Amount], [Measures].[Reseller Total Product Cost], [Measures].[Reseller Gross Profit] } ON columns
, TOPPERCENT( [Product].[Product Categories].[Bikes].[Touring Bikes].children, 100,[Measures].[Reseller Gross Profit] ) ON rows
FROM [Adventure Works]
クエリでは 100% (100%) が要求されることに注意してください。つまり、すべての行を返す必要があります。 ただし、 Numeric_Expression には負の値があるため、1 つの行のみが返されます。
ツーリング バイク | Reseller Sales Amount | Reseller Total Product Cost | Reseller Gross Profit |
---|---|---|---|
Touring-2000 ブルー、50 | $157,444.56 | $163,112.57 | ($5,668.01) |