RANK
指定されたパーティション内の現在のコンテキストのランクを、指定された順序で並べ替えて返します。 一致するものが見つからない場合、ランクは空白になります。
構文
RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
パラメーター
用語 | 定義 |
---|---|
ties | (省略可能) 2 つ以上の行が同点である場合どのようにランク付けを処理するかを定義します。 指定する場合、サポートされている値は DENSE または SKIP のいずれかです。 省略した場合: - 既定値は SKIP です |
relation | (省略可能) 返される出力行の基になるテーブル式。 指定する場合、<orderBy> と <partitionBy> のすべての列は、それから取得する必要があります。 省略した場合: - <orderBy> を明示的に指定する必要があります。 - <orderBy> と <partitionBy> のすべての列は完全に修飾されていて、1 つのテーブルのものである必要があります。 - 既定値は ALLSELECTED() で、<orderBy> と <partitionBy> のすべての列です。 |
axis | (省略可能) 視覚的な図形の軸。 視覚的な計算でのみ使用でき、<relation> を置き換えます。 |
orderBy | (省略可能) 各パーティションの並べ替え方法を定義する列を含む ORDERBY() 句。 省略した場合: - <relation> を明示的に指定する必要があります。 - 既定値は、<partitionBy> でまだ指定されていない <relation> 内のすべての列による並べ替えです。 |
blanks | (省略可能) 並べ替えでの空白値の処理方法を定義する列挙型。 サポートされる値は次のとおりです。
注。<blanks> パラメーターが指定されているとき、個々の式でも ORDERBY() 関数に blanks が指定されている場合、関連する orderBy 式については個々の orderBy 式の <blanks> が優先され、<blanks> が指定されていない orderBy 式については、親 Window 関数の <blanks> パラメーターに従います。 |
partitionBy | (省略可能) <relation> のパーティション分割方法を定義する列を含む PARTITIONBY() 句。 省略すると、<relation> は 1 つのパーティションとして扱われます。 |
matchBy | (省略可能) データの照合方法と現在の行の識別方法を定義する列を含む MATCHBY() 句。 |
reset | (省略可能) 視覚的な計算でのみ使用できます。 計算をリセットするかどうかと、視覚的な図形の列階層でのその対象レベルを示します。 指定できる値は、NONE、LOWESTPARENT、HIGHESTPARENT、または整数です。 動作は整数の符号によって次のように異なります。 - 0 または省略した場合、計算はリセットされません。 NONE と同等です。 - 正の場合、整数は、粒度とは関係なく、最も高い列から始まる列を指定します。 HIGHESTPARENT は 1 と同等です。 - 負の場合、整数は、現在の粒度を基準にして、最下位から始まる列を指定します。 LOWESTPARENT は -1 と同等です。 |
戻り値
現在のコンテキストのランク番号。
注釈
<orderBy>、<partitionBy>、<matchBy> の各列には、操作する現在の行を定義するための、対応する外部値が必要であり、次のような動作になります。
- 対応する外部列が 1 つだけ存在する場合は、その値が使用されます。
- 対応する外部列がない場合は、次のようになります。
- RANK は最初に、対応する外部列を持たないすべての <orderBy>、<partitionBy>、<matchBy> 列を決定します。
- RANK の親コンテキストにおけるこれらの列の既存の値の組み合わせごとに RANK が評価されて、行が返されます。
- RANK の最終的な出力はランク番号です。
<matchBy> が存在する場合、RANK は <matchBy> と <partitionBy> 内の列を使用して現在の行を識別しようとします。
<orderBy> と <partitionBy> 内で指定された列が <relation> のすべての行を一意に識別できない場合、2 つ以上の行が同じランクになる可能性があり、そのランクは ties パラメーターによって決定されます。
RANK は、行全体に対して空白の値を返します。 式を十分にテストすることをお勧めします。
SUM が SUMX と比べられるように、RANK を RANKX と比べることはできません。
<reset> は視覚的な計算でのみ使用でき、<orderBy> や <partitionBy> と組み合わせて使用することはできません。 <reset> が存在する場合、<axis> は指定できますが、<relation> は指定できません。
例 1 - 計算列
次の DAX クエリを実行します。
EVALUATE
ADDCOLUMNS(
'DimGeography',
"Rank",
RANK(
DENSE,
'DimGeography',
ORDERBY(
'DimGeography'[StateProvinceName], desc,
'DimGeography'[City], asc),
LAST,
PARTITIONBY(
'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc
同じ EnglishCountryRegionName を持つ各地域を、それらの StateProvinceName と City によってランク付けするテーブルが返されます。 空白の <orderBy> 列値は末尾で並べ替えられます。
例 2 - 視覚的な計算
次の視覚的な計算 DAX クエリは次の操作を実行します。
SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))
SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))
毎年の売上合計と履歴全体の両方で、毎月ランク付けする 2 つの列を作成します。
以下のスクリーンショットは、視覚的なマトリックスと最初の視覚的な計算式を示しています。