質問がありますが、探している答えを見つけることができませんでした (このフォーラムでも他のフォーラムでも):
- 25 パーセンタイル、中央値 (50 パーセンタイル)、および 75 パーセンタイルを計算する必要があります。
言い換えれば、どのデータが 25 番目、中央値、および 75 番目であるかを知るには、SSRS で MDX クエリを記述する必要があります。
これまでに見つけたのは、それぞれの正確な値ではありませんでした
ありがとう
質問がありますが、探している答えを見つけることができませんでした (このフォーラムでも他のフォーラムでも):
言い換えれば、どのデータが 25 番目、中央値、および 75 番目であるかを知るには、SSRS で MDX クエリを記述する必要があります。
これまでに見つけたのは、それぞれの正確な値ではありませんでした
ありがとう
私は自分のデータについて同じ問題に取り組んできました。私が抱えていた問題は、 Median() 関数を理解することです。関数のパラメーターを解釈する方法は次のとおりです。
Microsoft の定義: MEDIAN(Set_Expression [, Numeric_Expression])
私の解釈: Set_Expression は、中央値が評価される前にメジャーが合計される粒度を定義する値のセットです
Numeric_Expression は、合計されるメジャーです。合計のセットは、中央値を見つけるためにソートおよび評価されます。
私のケースでは、データセット全体の直線中央値を見つけるため、値を合計したくありませんでした。合計が計算されないようにするために、使用しているメジャーを含むファクト テーブル内のレコードとカーディナリティが 1 対 1 のディメンションにキー属性を使用しました。これまでに見た唯一の欠点は、偶数のレコードがあり、中間の 2 つのレコードの平均が .5 で終わる数値になるはずの場合に、中央値が整数を返すことがあることです。たとえば、中央の 2 つのレコードの値は 16 と 17 で、関数は 16.5 ではなく 17 を返します。これは軽微な欠陥であるため、今のところ見落とします。
これは、中央値関数を使用した私の計算がどのように見えるかです。
WITH MEMBER Measures.[Set Median] AS MEDIAN(
[Dimension].[Key Attribute].MEMBERS
,Measures.[Non-summable Measure]
)
Median と TopCount を組み合わせて 75 パーセンタイルを取得しました。TopCount はデータを降順で並べ替えるため、TopCount を使用して中央値のセットをデータの後半に制限します。TopCount をどのように理解しているかを説明します。
Microsoft の定義: TopCount(Set_Expression, Count [, Numeric_Expression])
私の解釈: Set_Expression は、必要な数のタプルが返される値のセットです
Count は、セットから返されるタプルの数です
Numeric_Expression は、セットを降順でソートするために使用される値です
Median 関数で、クエリで返されるファクト テーブルのレコードの後半を使用する必要があるため、ファクト テーブルとのカーディナリティが 1 対 1 であるディメンション テーブルのキーを再度使用し、次の基準で並べ替えます。中央値を求めたいメジャー。
メンバーのコーディング方法は次のとおりです。
MEMBER Measures.[75th Percentile] AS MEDIAN(
TOPCOUNT(
[Dimension].[Key Attribute].MEMBERS
,Measures.[Fact Table Record Count] / 2
,Measures.[Non-summable Measure]
)
,Measures.[Non-summable Measure]
)
これまでのところ、この関数の組み合わせは、私のデータ セットから真の 75 パーセンタイルを返しました。25 パーセンタイルを取得するために、コード内の TOPCOUNT を BOTTOMCOUNT に置き換えてみました。これは同じことを行うはずで、データを昇順で並べ替えて、レコードの後半ではなく前半を使用するだけです。残念ながら、この関数の組み合わせからは NULL しか取得できませんでした。そのため、25 パーセンタイルを取得する方法について提案を受け付けています。
これが私の最終的なクエリの外観です。
SELECT
{
Measures.[Set Median]
,Measures.[25th Percentile]
,Measures.[75th Percentile]
} ON 0
,[Dimensional row members here] ON 1
FROM [Cube]
WHERE
[Non-axis dimensional filter members here]