RANK
傳回指定之數據分割中目前內容的排名,依指定的順序排序。 If 找不到相符專案,則 rankblank。
語法
RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
參數
術語 | 定義 |
---|---|
ties |
(選擇性)定義當兩個 or 多個數據列系結時,如何處理排名。
If 指定,支援的 value 為 DENSE,or SKIP。 省略 If: - 預設為 SKIP |
relation |
(選擇性)傳回輸出數據列的數據表運算式。
If 指定, orderBy andpartitionBy 中的數據行 all 必須來自它。
If 省略:必須明確指定 - orderBy 。- All orderBy andpartitionBy 數據行必須是完整 and 來自單一數據表。
- 預設為 orderBy andpartitionBy 中 all 資料列的 ALLSELECTED() 。 |
axis |
(選擇性)視覺圖形中的軸。 只能在視覺計算中使用,and 會取代 relation 。 |
orderBy |
(選擇性)ORDERBY() 子句,其中包含 define 每個分割區排序方式的數據行。
If 省略:必須明確指定 - relation 。
- 預設會依已在 partitionBy 中指定之 notrelation 中的每個數據行排序。 |
blanks |
(選擇性)列舉,定義排序時如何處理 blankvalues。
支援的 values 如下:
注意,當指定個別表達式上 ORDERBY blanks 參數 and 空白時,blanks 個別 orderBy 表達式上的個別 orderBy 表示式會優先處理相關的 orderBy 表達式,andorderBy 表達式若未指定 blanks ,則會接受父 Window 函式上的 blanks 參數。 |
partitionBy |
(選擇性)PARTITIONBY() 子句,其中包含數據行,define 分割 relation 的方式。
If 省略, relation 會視為單一分割區。 |
matchBy |
(選擇性)MATCHBY() 子句,其中包含 define 如何比對數據 and 識別目前數據列的數據行。 |
reset |
(選擇性)僅適用於視覺計算。 指出 if 計算重設,and 視覺效果圖形的數據行階層層級。 接受的 values 為:NONE 、LOWESTPARENT 、HIGHESTPARENT 、or 整數。 行為取決於整數 sign:- If 省略零 or,計算會 not 重設。 相當於 NONE 。
- If 正數,整數會識別從最高、與粒紋無關的數據行。 HIGHESTPARENT 相當於1。
- If 負數,整數會識別從最低開始的數據行,相對於目前的粒紋。 LOWESTPARENT 相當於 -1。 |
傳回 value
目前內容的 rank 編號。
言論
每個
orderBy
、partitionBy
、andmatchBy
數據行都必須有對應的外部 value,以下列行為協助 define 要操作的目前數據列:- If 只有一個對應的外部數據行,則會使用其 value。
-
If 沒有對應的外部數據行,然後:
-
RANK 會 first 判斷沒有對應外部數據行的 all
orderBy
、partitionBy
、andmatchBy
數據行。 - 針對 RANK 父內容中這些數據行之現有 values 的每個組合,都會在傳回數據列 and 評估 RANK。
- RANK的最終輸出是 rank 數位。
-
RANK 會 first 判斷沒有對應外部數據行的 all
If
matchBy
存在,則 RANK 會嘗試使用matchBy
andpartitionBy
中的數據行來 idenfity 目前的數據列。If
orderBy
andpartitionBy
內指定的數據行無法唯一識別relation
中的每個數據列,則兩個 or 個數據列可能會有相同的排名,and 排名將由 ties 參數決定。RANK 會傳回總計數據列的 blankvalue。 建議您徹底測試表達式。
RANK 會 not 與 RANKX 比較,SUM 與 SUMX比較。
reset
只能用於視覺計算,and 不能與orderBy
orpartitionBy
搭配使用。 Ifreset
存在,可以指定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
傳回數據表,其 StateProvinceName and City,以相同的 EnglishCountryRegionName 來排名每個地理位置。
Blank
orderBy
資料行 values 會在結尾排序。
範例 2 - 視覺計算
下列視覺計算 DAX 查詢:
SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))
SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))
建立兩個數據行,依總銷售額 rank 每個 month,這兩個數據行都會在每個 year內,and 整個歷程記錄。
下列螢幕快照顯示可視化矩陣 andfirst 視覺計算表示式: