メジャーの累積合計に基づいて行の上位Nパーセントを返すMDXクエリが必要です。トリッキーな部分は、セットが合計に使用されるものとは異なるメジャーに基づいて順序付けられる必要があるため、TopPercent
関数を使用できないことです。
必要なものを明確にするために、ここに例を示します。できるだけ少ないパッケージで少なくとも1000グラムの肉を購入したいと思います。ただし、パッケージの重さだけでなく、品質も求めているので、肉の含有率が最も高い商品を優先したいと考えています。利用可能な製品は次のとおりです。
|| Name || Weight || PercentageOfMeat ||
| Product 1 | 500 | 20 |
| Product 2 | 250 | 60 |
| Product 3 | 1000 | 25 |
| Product 4 | 400 | 50 |
| Product 5 | 400 | 40 |
したがって、必要なものを取得するには、最初にPercentageOfMeatで降順に並べ替えて、最優先事項を満たします。次に、1000グラムの制限に達するまで、製品の重量を累積的に合計します。結果は、製品2、製品4、および製品5になります。これは非常に簡単です。
しかし、MDXでこれを行うことは可能ですか?TopPercent
(または例の場合、TopSum
)それ以外の場合は完璧ですが、並べ替えと合計に異なるメジャーを使用することはできません。最も重量のある製品だけが欲しければ、うまくいくでしょう。ドキュメントを引用するには、関数:
セットを降順でソートし、累積合計が指定されたパーセンテージ以上である最高値のタプルのセットを返します。
基本的に必要TopPercent
なのはセットをソートしない関数ですが、私が知る限り、何もありません。それで、私がやりたいことをすることは可能ですか、それともサーバーコードでこれを計算する必要がありますか?