共用方式為


ROWNUMBER

適用於:導出數據行計算數據表Measure視覺計算

傳回指定分割區內目前內容的唯一順位,依指定順序排序。 If 找不到相符專案,則 rownumberblank。

語法

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

參數

詞彙 定義
relation (選擇性) 傳回輸出資料列的來源資料表運算式。
If 指定,allorderByand 中的數據行 partitionBy 必須來自它。
If 省略:必須明確指定
- orderBy
- AllorderByandpartitionBy 數據行必須是完整 and 來自單一數據表。
- 預設為 ALLSELECTEDallorderBy中 and 資料列的 partitionBy() 。
axis (選擇性)視覺圖形中的軸。 只能在視覺計算中使用,and 會取代 relation
orderBy (選擇性)ORDERBY() 子句,其中包含 define 每個分割區排序方式的數據行。
If 省略:必須明確指定
- relation
- 預設會依已在 relation中指定之 notpartitionBy 中的每個數據行排序。
blanks (選擇性)列舉,定義排序 relationoraxis時如何處理 blankvalues。
支援的 values 如下:
  • DEFAULT (預設 value),其中數值 values 的行為 blankvalues 在零 and 負數 values之間排序。 字串的行為 blankvalues 在 all 字串之前排序,包括空字串。
  • FIRST,不論遞增 or 遞減排序順序為何,開頭一律會排序空白。
  • LAST,不論遞增 or 遞減排序順序為何,一律會在結尾排序空白。

注意,當個別表達式上的 blanks 參數 and 空白時,ORDERBY 函式中同時指定個別表達式,blanks 個別 orderBy 表達式會優先處理相關的 orderBy 表達式,andorderBy 未指定 blanks 的表達式會接受父函式上的 blanks 參數。
partitionBy (選擇性)PARTITIONBY() 子句,其中包含數據行 define 如何分割 relation。 If 省略,relation 會視為單一分割區。
matchBy (選擇性)MATCHBY() 子句,其中包含 define 如何比對數據 and 識別目前數據列的數據行。
reset (選擇性)僅適用於視覺計算。 指出 if 計算重設,and 視覺效果圖形的數據行階層層級。 接受的 values 為:目前可視化圖形中數據行的欄位參考,NONE(預設值)、LOWESTPARENTHIGHESTPARENT、or 整數。 行為取決於整數 sign:
- If 省略零 or,計算會 not 重設。 相當於 NONE
- If 正數,整數會識別從最高、與粒紋無關的數據行。 HIGHESTPARENT 相當於1。
- If 負數,整數會識別從最低開始的數據行,相對於目前的粒紋。 LOWESTPARENT 相當於 -1。

傳回 value

目前內容的 rownumber 編號。

備註

每個 orderBypartitionBy、andmatchBy 數據行都必須有對應的外部 value,以下列行為協助 define 要操作的目前數據列:

  • If 只有一個對應的外部數據行,則會使用其 value。
  • If 沒有對應的外部數據行,然後:
    • ROWNUMBER 會 first 判斷沒有對應外部數據行的 allorderBypartitionBy、andmatchBy 數據行。
    • 針對 values 父內容中這些數據行之現有 ROWNUMBER 的每個組合,都會在傳回數據列 ROWNUMBER 評估 and。
    • ROWNUMBER的最終輸出是這些數據列的 union。
  • If 有多個對應的外部數據行,則會傳回 error。

If matchBy 存在,則 ROWNUMBER 會嘗試使用 matchByandpartitionBy 中的數據行來 idenfity 目前的數據列。 If orderBy and partitionBy 中指定的數據行無法唯一識別 relation中的每個數據列,然後:

  • ROWNUMBER 會嘗試 find 唯一識別每個數據列所需的最少額外數據行數目。
  • If 可以找到這類數據行,ROWNUMBER
    • 嘗試 find 唯一識別每個數據列所需的額外數據行數目最少。
    • 自動將這些新數據行附加至 orderBy 子句。
    • 使用這個新的一組 orderBy 數據行來排序每個分割區。
  • If 無法找到這類數據行,and 函式會在運行時間偵測到系結,則會傳回 error。

reset 只能用於視覺計算,and 不能與 orderByorpartitionBy搭配使用。 If 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 and City,以相同的 EnglishCountryRegionName 來唯一排名每個地理位置。

範例 2 - 視覺計算

下列視覺計算 DAX 查詢:

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

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

建立兩個數據行,依每個 rank內的總銷售額 month 每個 year,and 整個歷程記錄。

下列螢幕快照顯示可視化矩陣 andfirst 視覺計算表示式:

DAX 視覺計算

INDEX ORDERBY PARTITIONBY WINDOW RANK