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

一切順利,

格雷格·德克勒

Leave a Comment

在 Power Automate 中執行直到循環控制

在 Power Automate 中執行直到循環控制

了解有關 Do Until 循環控制如何在 Power Automate 流中工作的基礎過程,並熟悉所需的變量。

使用 Deneb 為 LuckyTemplates 製作自定義視覺對象

使用 Deneb 為 LuckyTemplates 製作自定義視覺對象

受限於 LuckyTemplates 中提供的標準視覺效果?學習使用 Deneb 和 Vega-Lite 為 LuckyTemplates 創建自定義視覺對象,提升您的數據可視化能力。

在 Power Automate Desktop 中將日期添加到文件名

在 Power Automate Desktop 中將日期添加到文件名

在此博客中,您將了解如何使用 Power Automate Desktop 自動將日期添加到文件名的開頭或結尾。

Power Query:如何快速添加註釋

Power Query:如何快速添加註釋

找出幾種不同的方法在 Power Query 中添加註釋,這對於不喜歡記筆記的人非常有幫助。

Power Apps – SharePoint 集成指南

Power Apps – SharePoint 集成指南

在此博客中,您將了解 MS Power Apps 界面的基礎知識並了解 Power Apps-SharePoint 集成的過程。

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

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

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

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

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

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

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

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

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

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

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

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

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

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