閱讀英文

共用方式為


ROWNUMBER

適用於:計算結果列匯出數據表量值視覺計算

傳回指定分割區內目前內容的唯一順位,依指定順序排序。 如果找不到相符專案,則rownumber為空白。

語法

DAX
ROWNUMBER ( [<relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

參數

詞彙 定義
relation (選擇性) 傳回輸出資料列的來源資料表運算式。
如果指定,orderBypartitionBy 中的所有數據行都必須來自它。
如果省略:必須明確指定
- orderBy
- 所有 orderBypartitionBy 資料行都必須完整且來自單一數據表。
- 預設為 orderBypartitionBy中所有數據行的 ALLSELECTED()。
axis (選擇性)視覺圖形中的軸。 只適用於視覺計算,並取代 relation
orderBy (選擇性) ORDERBY() 子句,其中包含定義每個分割區排序方式的資料行。
如果省略:必須明確指定
- relation
- 預設會依尚未在 partitionBy中指定之 relation 中的每個數據行排序。
blanks (選擇性) 列舉,會定義排序時如何處理空白值。
支援的值為:
  • DEFAULT (預設值),其中數值的行為是空白值,會在零與負值之間排序。 字串的行為是空白值,會在所有字串之前排序,包括空字串。
  • 首先,不論是遞增還是遞減排序,開頭一律會排序空白。
  • 最後,不論是遞增還是遞減排序,結尾一律會排序空白。

注意,當同時指定個別表達式的 ORDERBY() 函式 blanks 參數和空白時,個別 orderBy 表達式上的 blanks 會優先處理相關的 orderBy 表達式,而未指定 blanks 的 orderBy 表達式會接受父 Window 函式上的 blanks 參數。
partitionBy (選擇性)PARTITIONBY() 子句,其中包含定義如何分割 relation 的數據行。
如果省略,relation 會視為單一分割區。
matchBy (選擇性) MATCHBY() 子句,其中包含定義如何比對資料及識別目前資料列的資料行。
reset (選擇性)僅適用於視覺計算。 指出計算是否重設,以及視覺圖形數據行階層的哪個層級。 接受的值包括:NONE、LOWESTPARENT、HIGHESTPARENT 或整數。 行為取決於整數符號:
- 如果零或省略,則計算不會重設。 相當於 NONE。
- 如果為正數,整數會識別從最高、與粒紋無關的數據行。 HIGHESTPARENT 相當於 1。
- 如果為負數,整數會識別從最低開始的數據行,相對於目前的粒紋。 LOWESTPARENT 相當於 -1。

傳回值

目前內容的 rownumber 編號。

備註

每個 orderBypartitionBymatchBy 數據行都必須有對應的外部值,以下列行為協助定義要操作的目前數據列:

  • 如果只有一個對應的外部資料行,則會使用其值。
  • 如果沒有對應的外部資料行,則:
    • ROWNUMBER 會先判斷沒有對應外部數據行的所有 orderBypartitionBymatchBy 數據行。
    • 針對 ROWNUMBER 的父內容中這些資料行現有值的每個組合,都會評估 ROWNUMBER,並傳回資料列。
    • ROWNUMBER 最終輸出是這些資料列的聯集。
  • 如果有多個對應的外部資料行,則會傳回錯誤。

如果 matchBy 存在,則 ROWNUMBER 會嘗試在 matchBy 中使用數據行,並 partitionBy 想出目前的數據列。
如果 orderBypartitionBy 中指定的資料列無法唯一識別 relation中的每個資料列,則:

  • ROWNUMBER 會嘗試尋找唯一識別每個資料列所需的最少額外資料行數目。
  • 如果可以找到這類資料行,ROWNUMBER 將會
    • 嘗試尋找唯一識別每個資料列所需的最少額外資料行數目。
    • 自動將這些新數據行附加至 orderBy 子句。
    • 使用這組新的 orderBy 資料行來排序每個分割區。
  • 如果找不到這類資料行,且函式在執行階段偵測到繫結,則會傳回錯誤。

reset 只能用於視覺計算,而且不能與 orderBypartitionBy搭配使用。 如果 reset 存在,則可以指定 axis,但無法指定 relation

範例 1 - 計算結果列

下列 DAX 查詢:

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 來唯一排名每個地理位置。

範例 2 - 視覺計算

下列視覺計算 DAX 查詢:

DAX
SalesRankWithinYear = ROWNUMBER(ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))

SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))

建立兩個數據行,依每個月的總銷售額排定每個月,這兩個數據行都是在每年內,以及整個歷程記錄。

下列螢幕快照顯示視覺化矩陣和第一個視覺計算表示式:

DAX 視覺計算

INDEX
ORDERBY
PARTITIONBY
WINDOW
RANK