使用 DAX 的 LuckyTemplates 自定義排序

使用 DAX 的 LuckyTemplates 自定義排序

許多人認為我們不能使用DAX執行LuckyTemplates自定義排序,但事實並非如此。DAX絕對可以保證排序,而且做起來其實很簡單。在今天的博客中,我將向您展示如何輕鬆做到這一點。 您可以在本博客底部觀看本教程的完整視頻。

目錄

我們的數據模型

讓我們從一個簡單的數據模型開始。我們的數據表包含三個活動、分析的投資回報率和成本。 

使用 DAX 的 LuckyTemplates 自定義排序

正如您在表中看到的,它們具有相同的成本,但它們的投資回報率不同。這裡的概念是根據給定預算的投資回報率了解我們應該運行哪些活動。 

LuckyTemplates 自定義排序:使用 While 循環

讓我們從一個帶有簡單 while 循環的度量開始。 

使用 DAX 的 LuckyTemplates 自定義排序

我們將預算設置為 20000,並使用 _Budget 將其保存在 Budget 變量中。

使用 DAX 的 LuckyTemplates 自定義排序

然後我們將通過創建 Table 變量VAR_Table來使用 while 循環。 

使用 DAX 的 LuckyTemplates 自定義排序

然後,我們使用與我們的基本表 4相對應的 ,並使用“_RT”添加一個運行總計列。

使用 DAX 的 LuckyTemplates 自定義排序

接下來,我們將當前行中的[Analyzed ROI]保存為VAR_ROI。然後,我們制定預算。我們從中減去,過濾表 4 以獲得大於或等於我們為當前行獲取的 ROI 的分析 ROI,然後獲取 [Cost ]。 

使用 DAX 的 LuckyTemplates 自定義排序

這些行將在第一行中獲得最高的 ROI,然後在下一行中獲得次高的 ROI,依此類推。因此,從本質上講,我們將有一個列,它是一個正在運行的總數,在負數中倒數到零。

然後我們退出 while 循環。我們使用VAR_FinalTable創建我們的 FinalTable 變量,我們在其中簡單地​​過濾我們的 Table 變量以獲得大於或等於零的運行總計。我們應用此過濾器是因為任何低於零的值都意味著我們已經變成負值並且超出了預算。

使用 DAX 的 LuckyTemplates 自定義排序

然後我們可以對這些值使用 我們將包括我們的列——Campaigns、Analyzed ROI 和 Cost——並添加

使用 DAX 的 LuckyTemplates 自定義排序

我們可以在“選擇”窗格中取消隱藏此卡片視覺效果,並看到我們擁有 Instagram 和 SEM,這是我們的兩個最高 ROI。

使用 DAX 的 LuckyTemplates 自定義排序

讓我們檢查我們的原始表來比較結果。

使用 DAX 的 LuckyTemplates 自定義排序

我們可以看到,PPC 的 ROI 確實低於 SEM 和 Instagram。 

然而,您可能已經註意到,我們的結果沒有按正確的順序返回,Instagram 的 8.1 在 SEM 的 8.15 之前首先顯示。 

應用 LuckyTemplates 排序順序

但是,如果我們希望首先返回 Instagram,因為它具有最高的 ROI,然後返回 SEM,該怎麼辦?基本上,我們要保證排序順序。這有點棘手,但不難理解如何去做。

這是我們的函數的樣子,底部部分與我們之前的 while 循環相同。

使用 DAX 的 LuckyTemplates 自定義排序

為了保證排序順序,我們需要做一些額外的工作。 

同樣,我們從我們設置為 20000 的VAR_Budget開始。然後,我們使用VAR_Count I 創建我們的 Count 變量,並在表 4 上 應用

使用 DAX 的 LuckyTemplates 自定義排序

在下一行中,我們將使用CONCATENATEX函數連接我們的活動、分析的投資回報率和成本列。你可以使用任何東西作為分隔符,只要它不在你的數據中,所以在這種情況下,我們只使用星號。 

然後我們將在成本列之後的下一個參數中使用豎線字符 (|)。我們還將使用VAR_Ordered按降序對分析的 ROI 進行排序,這意味著最高的 ROI 將位於頂部。

使用 DAX 的 LuckyTemplates 自定義排序

如果我們查看註釋行,它表示代碼將以類似SEM*8.158*10000 |的格式為我們提供結果。Instagram*8.1*10000。它還將按照最高 ROI 到最低 ROI 的順序出現。 

LuckyTemplates 自定義排序:使用 For 循環

這個例子很有趣,因為我們得到了一個for 循環、while 循環和各種很酷的函數。這一次,我們將使用for 循環。 

表格1

對於這個例子,Table1 是我們的 for 循環,我們正在做的是ADDCOLUMNS,從一到我們的計數,寫為(1,_Count,1)。

在我們的行中,我們使用,因為我們使用豎線字符來分隔表的行。使用PATHITEM ,我們然後從Ordered變量中獲取路徑,這是我們的字符串。 

我們還使用Value ,這是我們使用GENERATESERIES創建的自動列,或者我們的日曆 1、2、3、4、5,直到我們用完表中的行數。然後,我們將其作為Text返回。 

使用 DAX 的 LuckyTemplates 自定義排序

我們現在擁有的是我們表格的保證排序順序,從最高 ROI 到最低 ROI。因此,這是用於保證排序順序的 DAX。 

表2

現在,為了以可用的格式獲得它,我們必須執行Table2,我們將從我們擁有的字符串中挑選出各個列。

讓我們使用另一個ADDCOLUMNS添加到 Table1,我們的 for 循環。對於Campaigns,創建一個 campaigns 列並使用將星號替換為豎線。然後,我們將在 RowPath 上使用PATHITEM來獲取第一個元素並將其作為TEXT 返回。

使用 DAX 的 LuckyTemplates 自定義排序

Analyzed ROI列中,我們基本上會做同樣的事情。用豎線代替星號。然後,獲取我們路徑中的第二個項目並將其作為文本返回。我們這樣做是因為出於某種原因,PATHITEM允許我們以整數或文本而不是小數形式返回。

這有點奇怪,但我們可以解決這個問題,因為我們所要做的就是加零,DAX 會自動將 TEXT 字符串轉換為數值。 

使用 DAX 的 LuckyTemplates 自定義排序

同樣,我們對成本列執行相同的操作。我們使用SUBSTITUTEPATHITEM來獲取第三項。然後,為了返回一個數字,我們再次添加零,因為在這種情況下它是一個整數。

使用 DAX 的 LuckyTemplates 自定義排序

我們代碼的其餘部分是我們之前討論的 while 循環。我們現在得到的是我們保證的排序順序,從最高到最低的活動。 

使用 DAX 的 LuckyTemplates 自定義排序

我們的 SEM 是我們廣告系列中排名最高的投資回報率,Instagram 排名第二。 


LuckyTemplates 中的外部工具 – LuckyTemplates Power Sort Pro
如何在 Report Builder 中排序和過濾圖表
在 LuckyTemplates 報表中動態排序可視化

結論

使用 while 和 for 循環,我們成功地在我們的數據模型中根據其 ROI 使用 LuckyTemplates 自定義排序——這證明 DAX 絕對可以保證排序順序。 

確保您的數據在 DAX 中正確排序以準確分析和可視化數據非常重要。您可以應用您在本教程中學到的知識,為您的下一份報告對數據進行適當排序。

一切順利,

格雷格·德克勒


什麼是 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 網關?所有你必須知道的