RANK

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

傳回指定之數據分割中目前內容的排名,依指定的順序排序。 If 找不到相符專案,則 rankblank。

語法

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

參數

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

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

傳回 value

目前內容的 rank 編號。

言論

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

    • If 只有一個對應的外部數據行,則會使用其 value。
    • If 沒有對應的外部數據行,然後:
      • RANK 會 first 判斷沒有對應外部數據行的 allorderBypartitionBy、andmatchBy 數據行。
      • 針對 RANK 父內容中這些數據行之現有 values 的每個組合,都會在傳回數據列 and 評估 RANK。
      • RANK的最終輸出是 rank 數位。
  • If matchBy 存在,則 RANK 會嘗試使用 matchByandpartitionBy 中的數據行來 idenfity 目前的數據列。

  • If orderBy and partitionBy 內指定的數據行無法唯一識別 relation中的每個數據列,則兩個 or 個數據列可能會有相同的排名,and 排名將由 ties 參數決定。

  • RANK 會傳回總計數據列的 blankvalue。 建議您徹底測試表達式。

  • RANK 會 not 與 RANKX 比較,SUM 與 SUMX比較。

  • reset 只能用於視覺計算,and 不能與 orderByorpartitionBy搭配使用。 If reset 存在,可以指定 axis,但無法指定 relation

範例 1 - 計算結果列

下列 DAX 查詢:

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

傳回數據表,其 StateProvinceName and City,以相同的 EnglishCountryRegionName 來排名每個地理位置。 Blank orderBy 資料行 values 會在結尾排序。

範例 2 - 視覺計算

下列視覺計算 DAX 查詢:

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

SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))

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

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

DAX 視覺計算

INDEX ORDERBY PARTITIONBY WINDOW ROWNUMBER