RANKX 深入探討:LuckyTemplates DAX 函數

RANKX 深入探討:LuckyTemplates DAX 函數

今天,我們將深入探討 RANKX,它是 LuckyTemplates 中的標量 DAX 函數,可讓您返回構成數字列表一部分的每個表行中特定數字的排名。您可以在本博客底部觀看本教程的完整視頻。

目錄

示例場景

我們將分析一些最重要的場景,包括何時在中引用整個表和字段名稱。

我們還將檢查當粒度級別降低時以及在字段上應用排序順序時會發生什麼。最後,我們將仔細研究在表中引用表名或字段名的最佳實踐,以及如何在後端評估排名。

RANKX 場景一:客戶排名

在我們的第一個場景中,我們想要計算客戶的排名並在 RANKX 函數中引用整個客戶表。最終,我們將了解如何評估結果。

因此,讓我們首先打開 LuckyTemplates 並單擊Key Measures選項卡下的Total Sales選項按鈕,然後轉到New Measure。為客戶排名寫一個度量(例如,“Customer Ranking =”)。

您可以通過將客戶排名度量拖動到表內來查看結果。

RANKX 深入探討:LuckyTemplates DAX 函數

但這是適用於所有情況的最佳方法嗎?如果有兩個同名但在不同城市的人怎麼辦?或者,如果我們有兩個名稱相同但領土不同的地方怎麼辦?

RANKX 場景 2:城市排名 V1

現在,讓我們在第一個場景中應用相同的方法。然而,這一次,我們將把它應用於 regions 表,其中我們有兩個名稱相同但位於兩個不同位置的城市。

RANKX 深入探討:LuckyTemplates DAX 函數

正如您在上圖中看到的,在區域表中,我們有兩個同名的城市,但它們在兩個不同的地區下可用。那麼當我們應用之前場景中的相同步驟時會發生什麼?

結果將如下所示:

RANKX 深入探討:LuckyTemplates DAX 函數

現在我們開始發現我們的排名公式存在問題。由於 RANKX 函數在整個表格集上迭代,它無法合併具有相同名稱的城市的結果,這些城市在兩個不同的地區都可用。這最終會導致錯誤。

要解決這個問題,需要引用RANKX函數內部的字段名和表名,如下圖所示。

RANKX 深入探討:LuckyTemplates DAX 函數

那麼它是如何修復錯誤的呢?當我們在 RANKX 函數中引用一個字段名時,它只會遍歷該列而不是整個表。

即使這兩個城市在兩個不同的地區可用,它也會刪除重複項,從而將它們合併為一個城市。

RANKX 場景 3:地區排名

那麼當粒度級別降低時會發生什麼?

在這種情況下,您將在計算區域級別的排名時看到錯誤。原因是當我們只引用表名而再次忽略列名時,它會遍歷整個表,因此無法在地域級別合併結果。

要在區域級別獲得正確的結果,您需要引用區域表中的區域字段。但是什麼時候應該引用整個表格主題並在表格中包含字段名稱?

當排名應用於最低粒度級別時,我們可以參考表名而忽略字段名。

RANKX 深入探討:LuckyTemplates DAX 函數

但是當粒度級別降低時,我們將不得不引用列名和表名。到目前為止,我們僅在單個視覺對象(即表格)中分析結果。

Cities RankingV2:使用切片器的更好方法

讓我們複製第二個場景,其中視覺對象的左側將僅引用表名,而右側將引用 RANKX 函數內的列名。然後,我們將通過以區域形式將切片器帶到該頁面上來比較結果,結果如下圖所示。

RANKX 深入探討:LuckyTemplates DAX 函數

當我們在切片器中進行選擇時,您會注意到在可視表的左側,它沒有按序列順序提供結果,因為 RANKX 正在遍歷整個區域的表。然而,在表格的右側,您將看到按順序排列的結果。

原因是 RANKX 僅在特定的表列上迭代,允許它根據對切片器所做的選擇過濾出結果。這也是要記住的最重要的事情之一。

如果我們想看到整體排名結果,我們可以在RANKX函數中只引用表名。

但是,如果我們希望我們的結果按照切片器中的選擇按順序排列,那麼我們還需要在函數內引用列名。

RANKX 場景 4:產品排名

最後,讓我們繼續我們的最終場景。讓我們看看當我們在某個領域下訂單時會發生什麼,以及 RANKX 如何評估後端的排名。

在這種情況下,我們使用產品表中的產品名稱來分析哪些是我們表現最好的產品

因此,就像在第一個場景中一樣,您需要為您的產品編寫排名指標(在這種情況下,我們將使用產品排名)。如果將產品排名指標帶入視覺效果,您將看到如下圖所示的結果:

RANKX 深入探討:LuckyTemplates DAX 函數

您可以看到,即使我們在 RANKX 函數中引用了我們的產品名稱字段,它也沒有正確評估結果。那麼為什麼會這樣呢?要回答這個問題,我們需要打開DAX Studio

RANKX 場景 5:DAX Studio

那麼我們打開DAX studio,看看RANKX是如何在後端評估排名結果的。

在下圖中,我通過性能分析器複製了表視覺對象的查詢並將其粘貼到 DAX 工作室中。正如您在此查詢中看到的,還有產品索引,產品表中的排序字段。

RANKX 深入探討:LuckyTemplates DAX 函數

因此,即使在我們的表視覺中我們只帶來了產品名稱、總銷售額和排名指標,但默認情況下,在排名計算的後端會引用該字段。

所以現在,讓我們通過引用 RANKX 函數中的排序字段來修復我們的產品排名度量,並最終查看結果。

RANKX 深入探討:LuckyTemplates DAX 函數

正如您在上圖中看到的,產品名稱的結果現在得到了正確的評估。因此,每當我們有一個字段按另一個字段排序時,我們需要根據我們今天討論的所有場景在 RANKX 函數中引用這兩個字段。

結論

所以這些是在 DAX 計算中使用 RANKX 函數時的一些場景。總的來說,在廣泛的函數中有更多的方法可以做到這一點。

最重要的是要記住,您需要了解放置 RANKX 函數的上下文。

RANKX 在計算 LuckyTemplates 中的任何排名類型分析方面非常靈活。它還支持高級見解,給您的報告和可視化效果的消費者留下深刻印象。

一切順利,

苛刻的阿尼爾·喬希


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的