SSAS キューブのメジャーとしてパーセンタイル (99% パーセンタイルとしましょう) を使用するにはどうすればよいですか? 多くの異なるディメンションとフィルターを使用してレポートできるようにしたいので、SQL で事前に計算することはオプションではありません。
1 に答える
ディメンションのパーセンタイルを評価する場合は、SQL で事前に計算しなくても実行できます。これは、TopPercentおよびTail MDX 関数の組み合わせを使用して実行できます。
たとえば、[メジャー].[Avg Daily Census] (私はヘルスケアで働いています) メジャーによって、[Date].[Calendar Month] ディメンション属性の 25 パーセンタイルを見つけたいとします。これを行うには、次のクエリを使用できます。
WITH
MEMBER [Measures].[25th Percentile] AS
(
Tail(
TopPercent(
[Date].[Calendar Month].[Calendar Month],
100 - 25,
[Measures].[Avg Daily Census]
)
).Item(0),
[Measures].[Avg Daily Census]
)
SELECT
[Measures].[25th Percentile] ON 0
FROM [Census]
このクエリは、TopPercent を使用して [Calendar Month] ディメンション属性に沿って値の上位 75% を検索し、そのセットに沿って最小値を持つメンバーを検索してから、そのメンバーのメジャーを評価します。
ここで、パーセンタイル値のセット全体を生成する場合は、シーケンス ユーティリティ ディメンション (数値を含むディメンションのみ) を使用するか、0 ~ 99 を含むカスタム パーセンタイル ディメンションを作成できます。次のクエリは、すべてのパーセンテージでメジャーの値を生成します。
WITH
MEMBER [Measures].[Percentile] AS
(
Tail(
TopPercent(
[Date].[Calendar Month].[Calendar Month],
100 - [Sequence].[Ones].CurrentMember.MemberValue,
[Measures].[Avg Daily Census]
)
).Item(0),
[Measures].[Avg Daily Census]
)
SELECT
[Measures].[Percentile] ON 0,
[Sequence].[Ones].&[0] : [Sequence].[Ones].&[99] ON 1
FROM [Census]
ただし、ファクト テーブルの粒度でパーセンタイルを評価しようとしている場合は、各ファクト行のパーセンタイル値を事前に計算するか、縮退ディメンションを追加して上記の方法を使用する必要があると思います。