ROWNUMBER
指定されたパーティション内の現在のコンテキストの一意のランクを、指定された順序で並べ替えて返します。 一致するものが見つからない場合、rownumber は空白になります。
構文
ROWNUMBER ( [<relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
パラメーター
用語 | 定義 |
---|---|
relation |
(省略可能) 返される出力行の基になるテーブル式。
指定した場合、 orderBy および partitionBy 内のすべての列は、その列から取得する必要があります。
省略した場合: - orderBy を明示的に指定する必要があります。- すべての orderBy 列と partitionBy 列は完全修飾で、単一のテーブルから取得する必要があります。
- orderBy および partitionBy のすべての列の ALLSELECTED() が既定値になります。 |
axis |
(省略可能) 視覚的な図形の軸。 ビジュアル計算でのみ使用でき、relation を置き換えます。 |
orderBy |
(省略可能)各パーティションの並べ替え方法を定義する列を含む ORDERBY() 句。
省略した場合: - relation を明示的に指定する必要があります。
- 既定では、 partitionBy でまだ指定されていない relation 内のすべての列によって並べ替えられます。 |
blanks |
(省略可能)relation または axis を並べ替えるときに空白値を処理する方法を定義する列挙体。
サポートされている値は次のとおりです。
注意: 個々の式に対する ORDERBY() 関数の blanks パラメーターと空白の両方が指定されている場合、個々の orderBy 式の blanks は関連する orderBy 式に優先され、blanks を指定しない orderBy 式は親関数の blanks パラメーターを受け取ります。 |
partitionBy |
(省略可能)relation のパーティション分割方法を定義する列を含む PARTITIONBY() 句。 省略すると、relation は 1 つのパーティションとして扱われます。 |
matchBy |
(省略可能)データの照合方法と現在の行の識別方法を定義する列を含む MATCHBY() 句。 |
reset |
(省略可能) 視覚的な計算でのみ使用できます。 計算がリセットされるかどうか、およびビジュアル図形の列階層のレベルを示します。 使用できる値は、現在の視覚図形の列へのフィールド参照、NONE (既定値)、LOWESTPARENT 、HIGHESTPARENT 、または整数です。 動作は、整数符号 (- 0 または省略した場合) に依存し、計算はリセットされません。 NONE に相当します。
- 正の場合、整数はグレインに関係なく、最も高い列から始まる列を識別します。 HIGHESTPARENT は 1 に相当します。
- 負の値の場合、整数は現在のグレインを基準にして、最下位から始まる列を識別します。 LOWESTPARENT は -1 に相当します。 |
戻り値
現在のコンテキストの行番号。
注釈
各 orderBy
、partitionBy
、および matchBy
列には、動作する現在の行を定義するのに役立つ、対応する外部値が必要です。次の動作を使用します。
- 対応する外部列が 1 つだけ存在する場合は、その値が使用されます。
- 対応する外部列がない場合は、次のようにします。
-
ROWNUMBER は、最初に、対応する外部列がないすべての
orderBy
、partitionBy
、およびmatchBy
列を決定します。 - 親コンテキスト内のこれらの列の既存の値の組み合わせ ROWNUMBER すべてについて、ROWNUMBER が評価され、行が返されます。
- ROWNUMBERの最終的な出力は、これらの行の和集合です。
-
ROWNUMBER は、最初に、対応する外部列がないすべての
- 対応する外部列が複数ある場合は、エラーが返されます。
matchBy
が存在する場合、ROWNUMBER は matchBy
の列を使用し、partitionBy
を使用して現在の行を表します。
orderBy
および partitionBy
内で指定された列が relation
内のすべての行を一意に識別できない場合は、次のようにします。
- ROWNUMBER は、すべての行を一意に識別するために必要な追加列の最小数を検索しようとします。
- このような列が見つかると、ROWNUMBER
- すべての行を一意に識別するために必要な追加の列の数が最も少ないようにしてください。
- これらの新しい列を
orderBy
句に自動的に追加します。 - この新しい orderBy 列セットを使用して、各パーティションを並べ替えます。
- このような列が見つからない場合、関数が実行時に同点を検出すると、エラーが返されます。
reset
はビジュアル計算でのみ使用でき、orderBy
または partitionBy
と組み合わせて使用することはできません。
reset
が存在する場合は、axis
を指定できますが、relation
指定できません。
例 1 - 計算列
次の DAX クエリ:
EVALUATE
ADDCOLUMNS(
'DimGeography',
"UniqueRank",
ROWNUMBER(
'DimGeography',
ORDERBY(
'DimGeography'[StateProvinceName], desc,
'DimGeography'[City], asc),
PARTITIONBY(
'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc
StateProvinceName と City によって、同じ EnglishCountryRegionName を持つ各 geography を一意にランク付けするテーブルを返します。
例 2 - 視覚的な計算
次の視覚的な計算 DAX クエリです。
SalesRankWithinYear = ROWNUMBER(ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))
SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))
各年の売上合計と履歴全体の両方で、毎月一意にランク付けする 2 つの列を作成します。
次のスクリーンショットは、ビジュアル マトリックスと最初のビジュアル計算式を示しています。
視覚的な計算 を