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

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

讓我們再看一下本教程中討論的問題,它動態比較每個月的前 N ​​個工作日。這個問題是基於我們論壇上一位 LuckyTemplates 成員的查詢,他想動態地查看和比較給定月份的前 5、10、15 和 20 個計費日(非週末和非節假日)前一個月。

我們將提出 DAX 編碼語言解決方案,而不是使用 power query。您可以在本博客底部觀看本教程的完整視頻。

第一個視頻中,我想出了一個 power query 解決方案來解決這個問題。但後來我們的一位 LuckyTemplates 專家 Antriksh Sharma 想出了一個非常有效的措施,也值得深入研究。我們將討論他在開發度量時使用的一些技術,這將為您的 DAX 工具箱提供額外的工具。

這對我和其他一些研究過這個的專家來說確實有用。跨月可比工作日的同類比較通常是一種有價值的模式,可以在許多情況下使用。

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

讓我們深入研究冪查詢,看看 Antriksh 在這裡做了什麼。我們有Month & YearTotal Sales,最後是我們根據我們開發的假設參數使用 power query 選擇的N Business Days 的 Total Sales 。

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

Antriksh 採取了一種非常不同的方法,他使用了一種非常短的方法來解決整個問題。我注意到的第一件事是使用命令。

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

這是一個我不常使用的 DAX 函數,但非常適合解決此類問題。如果我們看一下 SQL BI DAX 指南,它說 GENERATE 函數是一個表函數,它使用兩個不同的表作為其輸入,然後執行與 SQL 命令 CROSS APPLY 等效的操作。

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

因此,它採用一個基表 (Table1) 並對其進行迭代,然後採用第二個表表達式並對第一個表中的每一行進行計算,然後返回到表作為輸出。

讓我們採用 Antriksh 的度量並將其放入表中。我們可以看到它產生的結果與我們上次使用的冪查詢解決方案完全相同。所以這很好,並且很好地驗證了這兩種措施。

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

讓我們把這個措施分開。此處應用的第一個過濾器是 Dates[IsBusinessDay] = TRUE。這會根據擴展日期表 IsBusinessDay 字段取出所有非週末和非假日日期。

我們在第一個教程中對此進行了更多討論,我們還介紹瞭如何將其綁定到我們的假期表中。

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

真正有趣的部分在於兩個表輸入。第一個表只是 Date 表中 Month & Year 字段的單列表。

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

但是第二個表輸入是有趣的事情發生的地方。Antriksh 使用,然後使用我們的動態參數作為 TOPN 中的行數。

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

Total Sales度量附加到第二個表,然後應用於第一個表。

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

目錄

使用 DAX 編碼語言了解複雜的度量

弄清楚像這樣的複雜度量正在做什麼的最簡單方法之一是進入表格編輯器。我們可以看一下這個表達式,先弄清楚這個 TOPN 表達式在做什麼。

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

讓我們複製 TOPN 部分並創建一個新的DAX 查詢。請記住,DAX 查詢以 EVALUATE 開頭。

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

當我們粘貼 TOPN 部分時,我們會看到這是從銷售訂單表中提取前 5 個日期。TOPN 中有一個表,由銷售表中所有訂單日期的值組成。

此 TOPN 函數採用假設參數的值(在本例中為 5)並將其應用於銷售訂單日期字段。然後它會根據該字段以升序提取過濾器上下文中的前 5 個日期。

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

鑑於沒有額外的篩選器上下文,它只是從整個表中提取前 5 個日期。

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

@Sales 列只是將適當篩選上下文中的總銷售額添加到 TOPN 表中。

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

到目前為止,我們有月份和年份的第一個表,銷售表中前 N 個日期的 TOPN 的第二個表,然後是與之相關的總銷售額。

在 DAX 編碼語言中使用 GENERATE 表

讓我們看看這個GENERATE 表在做什麼。我們將跳回表格編輯器並創建一個新的 DAX 查詢。

我們將像往常一樣從 EVALUATE 開始,粘貼代碼的 GENERATE 部分,然後單擊 5。

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

我們可以看到,對於第一個表的每一行,它都在迭代並與在 @Sales 函數的上下文中評估的 TOPN 表中的 5 行連接。

它用了 4 月的前 5 個工作日、5 月的前 5 個工作日、6 月的前 5 個工作日,依此類推,直到到達第一個表的末尾。

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

這正是我們所需要的,現在將這些值相加就變得相對簡單了。我們有結果(這是 GENERATE 結果的表變量),然後我們需要總結 @Sales 函數。

在上下文中,我們現在總結 4 月的前 5 個工作日,5 月的前 5 個工作日,依此類推,直到我們得出總計 23,737,430 美元,在這種情況下,它沒有月和年的上下文來操作.

這對整個 @Sales 列求和,並使我們得到與我們的強大查詢解決方案中完全相同的總數。

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

您可以看到,如果我們將切片器更改為 10,我們將使用 DAX 編碼語言動態獲得與在 power 查詢中相同的結果。

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

我們還有底部的條形圖動態調整以反映我們所做的更改。

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

動態調整度量標題

我想向您展示另一個額外的技巧。您可以對假設參數創建動態調整併將其動態綁定到度量標題中。

例如,如果我們將頂部的切片器更改為 15,它將動態地將底部的度量名稱更改為Total Sales for the First 15 Business Days of Each Month

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

使用條件格式在 DAX 中有一種簡單的方法可以做到這一點。我們基本上只需要三個字符串。第一個是First 的 Total Sales,然後將其與我們從假設參數中獲得的值連接起來,然後將其與標題的其餘部分聯繫起來。

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

然後我們進入視覺,轉到標題的條件格式,然後單擊fx

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

我們將按字段值格式化並選擇該動態標題度量。這將更改假設參數的選擇。

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

結論

我們現在擁有的是使用 DAX 編碼語言的完整解決方案。我們已經討論了使用 GENERATE 函數來實現這一點的真正有創意和高效的方法。我要感謝 Antriksh 與我們分享他出色的 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 網關?所有你必須知道的