RANKX
針對 table 引數中的每個資料列,傳回數字在數字清單中的排名。
語法
RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])
參數
table
任何 DAX 運算式,其會傳回評估運算式的資料表。
expression
傳回單一純量值的任何 DAX 運算式。 運算式會針對 table 的每個資料列進行評估,以產生所有可能的排名值。 請參閱<備註>一節以了解當 expression 評估為空白時的函式行為。
value
(選擇性) 任何 DAX 運算式,其會傳回要尋找排名的單一純量值。 請參閱<備註>一節以了解當運算式裡找不到 value 時的函式行為。
省略 value 參數時,會改為使用目前資料列的運算式值。
order
(選擇性) 指定 value 排名方式的值,排名方式為低至高或高至低:
value | 替代值 | 描述 |
---|---|---|
0 (zero) | FALSE | 依運算式值的遞減順序排名。 如果值等於運算式中的最高數字,則 RANKX 會傳回 1。 這是省略 order 參數時的預設值。 |
1 | TRUE | 依運算式的遞增順序排名。 如果值等於運算式中的最低數字,則 RANKX 會傳回 1。 |
ties
(選擇性) 定義當有繫結時,如何決定排名的列舉。
列舉 | 描述 |
---|---|
跳過 | 繫結之後的下一個排名值,是繫結的排名值加上繫結值的計數。 例如,如果五個 (5) 值發生繫結且排名為 11,則下一個值的排名將為 16 (11 + 5)。 這是省略 ties 參數時的預設值。 |
Dense | 繫結之後的下一個排名值是下一個排名值。 例如,如果五個 (5) 值發生繫結且排名為 11,則下一個值的排名將為 12。 |
傳回值
在針對所有 table 數字資料列評估的所有 expression 全部可能值之間,value 的排名數。
備註
如果 expression 或 value 評估為空白,則針對產生數字的所有運算式會將其視為 0 (零),或針對所有文字運算式視為空白文字。
如果 value 不在 expression 的所有可能值之間,則 RANKX 會暫時將 value 新增至 expression 中的值,然後重新評估 RANKX,以判斷 value 的適當排名。
在引數清單中放置空白逗號 (,) 可能會略過選擇性引數,亦即 RANKX(Inventory, [InventoryCost],,,"Dense")
使用 RANKX 函式時,與 Decimal Number 資料類型的值之間的相等相關比較 (=、 >><= 和 <=) 可能會傳回非預期的結果。 可能會產生不正確的結果,因為具有小數位數資料類型的值會儲存為 IEEE Standard 754 浮點數,而且其精確度有固有限制。 若要避免非預期的結果,請將資料類型變更為固定的小數位數,或使用 ROUND 執行強制四捨五入。
在計算結果欄或資料列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。
範例
Products 資料表中下列計算結果欄會計算網際網路通道中每個產品的銷售排名。
= RANKX(ALL(Products), SUMX(RELATEDTABLE(InternetSales), [SalesAmount]))