トップパーセンツ(MDX)

集合を降順にソートし、累積総量が指定されたパーセンテージ以上である最も高い値を持つタプルの集合を返します。

構文

  
TopPercent(Set_Expression, Percentage, Numeric_Expression)   

引数

Set_Expression
集合を返す有効な多次元表現(MDX)式。

百分率
返すべきタプルの割合を指定する有効な数値式。

Important

パーセンテージは 正の値である必要があります。負の値がエラーを生み出します。

Numeric_Expression
有効な数値式で、通常は数を返すセル座標の多次元表現(MDX)式です。

Remarks

TopPercent関数は、指定された集合上で評価された数値式の合計を計算し、集合を降順に並べ替えます。 関数は、合計値の累積割合が指定された割合以上である最も高い要素を返します。 この関数は、累積合計が少なくとも指定されたパーセンテージである集合の最小部分集合を返します。 返される要素は大きいから小さい順に並べられます。

Warning

Numeric_Expressionが負の値を返した場合、TopPercentは1行のみを返します。

この行動の詳細は2つ目の例を参照してください。

Important

BottomPercent関数と同様に、TopPercent関数は常に階層を破ります。

Examples

A. TopPercentのリターン

以下の例は、自転車カテゴリーの販売上位10位に入った上位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])  

上記の式は以下の結果を導きます:

市町村 リセラーの売上金額
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における負の値の影響を理解するのに役立ちます。 まずは、行動を示すための文脈を構築しましょう。

以下のクエリは、リセラーの「販売額」「総製品コスト」「粗利益」の表を利益の降順に並べて返します。 利益の価値はマイナスのみにとどまっておきますのでご注意ください。つまり、最小の損失は上位に現れます。

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]  
  

上記のクエリは以下の結果を返します。中央部分の行は読みやすさのために削除されました。

ツーリング バイク リセラーの売上金額 再販業者総商品コスト 転売生の粗利益
ツーリング - 2000年ブルー、50 $157,444.56 163,112.57ドル ($5,668.01)
ツーリング - 2000年ブルー、46 321,027.03ドル 333,021.50ドル ($11,994.47)
ツーリング-3000ブルー、62 87,773.61ドル 100,133.52ドル ($12,359.91)
... ... ... ...
ツーリング1000イエロー、46 $1,016,312.83 $1,234,454.27 ($218,141.44)
ツーリング - 1000 イエロー、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行のみです。

ツーリング バイク リセラーの売上金額 再販業者総商品コスト 転売生の粗利益
ツーリング - 2000年ブルー、50 $157,444.56 163,112.57ドル ($5,668.01)