Rank
EssbaseのMDX Rank()関数は、セット内のタプルの数値位置を返します。
構文
Rank ( member_or_tuple, set [,numeric_value_expr [,ORDINALRANK | DENSERANK | PERCENTRANK ]] )
パラメータ
- member_or_tuple
-
ランク付けるメンバーまたはタプル。
- set
-
ランク付けるタプルを含むセット。重複メンバーは含められません。
- numeric_value_expr
-
オプション。数値のソート基準。
- ORDINALRANK
-
オプション。重複を個別にランク付けます。同順位はEssbaseによって決定されます。重複は異なるエンティティと見なされます。例: (1,2,3,4,5)。
- DENSERANK
-
オプション。序数にギャップのないランク付け。同順位は同じランクが付けられます。例: (1,1,1,2,3)
- PERCENTRANK
-
オプション。0から1までのスケールでランク付けます。ランク値は、このメンバーまでの累積合計によってスケーリングされます。例: ( .1, .15, .34, .78, 1.0)。
ノート
Rank関数は、集約ストレージ(ASO)キューブにのみ適用されます。
数値式が指定されていない場合、この関数はセット内のタプルの1から始まる位置を返します。
数値式が指定されている場合、この関数は数値に基づいてセットをソートし、ソートされたセット内のタプルの1から始まる位置を返します。
オプションのランク・フラグ(ORDINALRANK、DENSERANKまたはPERCENTRANK)が指定されている場合、Rank関数は数値に基づいてセットをソートし、フラグの指示に従って、ソートされたセット内のタプルの1から始まる位置を返します。ランク・フラグが指定されていない場合、同順位には同じランクが付けられ、次のメンバーはメンバーの数です。例: (1,1,1,4,5)。
この関数がセットをソートする場合、タプルを降順でソートし、その順序に基づいてランクを割り当てます(最高値は1にランク付けられます)。
例
例1
WITH MEMBER [Measures].[Units_Rank] AS
'Rank(Products.CurrentMember, Products.CurrentMember.Siblings)'
SELECT
{Units, [Price Paid], [Units_Rank]}
ON COLUMNS,
{ Products.Members } ON ROWS
FROM ASOSamp.Basic
例2
WITH MEMBER [Measures].[Units_Rank] AS
'Rank( Products.CurrentMember, Products.CurrentMember.Siblings)'
SELECT {Units, [Measures].[Units_Rank]}
ON COLUMNS,
Union(Children([Televisions]),
Children([Radios]))
ON ROWS
FROM ASOSamp.Basic
例3
次のMDXの例は、ユニットのメジャーの観点から兄弟タプルをランク付けします。
WITH MEMBER [Measures].[Units_Rank] AS
'Rank(([Products].CurrentMember), {[Products].CurrentMember.Siblings}, Measures.[Units])'
SELECT
{Units, [Price Paid], [Units_Rank]}
ON COLUMNS,
{ Products.Members } ON ROWS
FROM ASOSamp.Basic
例4
次のMDXの例は、上位レベルのメンバーのレベル0の子孫に沿ってタプルをランク付けします。
WITH MEMBER [Measures].[Units_Rank] AS
'Rank(([Products].CurrentMember),{Descendants([Products],10,LEAVES)})'
SELECT
{Units, [Price Paid], [Units_Rank]}
ON COLUMNS,
{ Products.Members } ON ROWS
FROM ASOSamp.Basic