1

質問がありますが、探している答えを見つけることができませんでした (このフォーラムでも他のフォーラムでも):

  • 25 パーセンタイル、中央値 (50 パーセンタイル)、および 75 パーセンタイルを計算する必要があります。

言い換えれば、どのデータが 25 番目、中央値、および 75 番目であるかを知るには、SSRS で MDX クエリを記述する必要があります。

これまでに見つけたのは、それぞれの正確な値ではありませんでした

ありがとう

4

1 に答える 1

0

私は自分のデータについて同じ問題に取り組んできました。私が抱えていた問題は、 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]
于 2014-05-15T18:16:28.833 に答える