LuckyTemplates 假日日曆 – 使用 DAX 計算日期

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

創建 LuckyTemplates 假日日曆對於許多時間智能計算至關重要。在本教程中,我將向您展示如何使用 DAX 度量來計算特定的假期日期。您可以在本博客底部觀看本教程的完整視頻。

這個例子來自的一項名為“每週問題”的計劃,每個月我們都會處理一個真實世界的 DAX 或 Power Query 問題並對其進行詳細分解。

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

我使用了一種稱為 Rubber Duck Debugging 的技術。它通常用於調試,但我發現它對於提出初始框架​​也非常有價值,您將使用該框架來解決 LuckyTemplates 中的複雜問題。

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

它基本上只是使用一隻橡皮鴨或一個與你交談的人,大聲說出你設想的解決方案,並製定一個解決問題的計劃。

僅僅發聲通常可以幫助您解決問題。在某些情況下,在調試情況下,它會讓您意識到自己在做什麼,是否有意義,並通過解決問題來幫助找到解決問題的方法。

以下是針對此特定挑戰的真實 DAX 問題。我們這裡有一張桌子,有 10 個假期,包括月份和日期。有些日子是特定的日子,有些是相對的日子。我們需要提出假日日期和慶祝日期措施。

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

為此,我們需要將 Day 字段解析為兩個部分。第一個解析是事件(第三個、最後一個、第一個、第二個),第二個解析是日期(星期一、星期四)。這是我們需要分開的兩個關鍵信息。

目錄

在 LuckyTemplates 假期日曆中計算特定日期

通常,我會在 Power Query 中通過分隔符分隔來執行此操作,但由於我們使用 DAX 執行此操作,因此我們將不得不以不同的方式執行此操作。(請注意,我們不允許在此挑戰中使用 Power Query。)

我們需要計算指定年月日名稱的最小和最大日期。在這種情況下,例如,我們可以說 2027 年、一月和第三個星期一。一旦我們得到給定月份的最短天數,我們就可以將它加 7 天到第二個星期一,14 天到第三個星期一,21 天到第四個星期一。

我想與您分享的與此挑戰相關的另一種技術是我在創建度量時稱為分部構建的技術。我發現這在復雜的測量中非常有用,如果你有很多變量,你有很多組件要構建。

我總是做的是在末尾有一個結果變量 ( VAR Result ),而我的最後一條語句只是Return Result。這使得返回並測試我構建的變量變得非常容易。我可以通過並跟踪並部分解決它。

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

我想與您分享的最後一項技術是我稱之為搜索未知函數的技術。例如,如果我不知道該 LuckyTemplates 假日日曆挑戰使用什麼函數,我將轉到“外部工具”選項卡並轉到 SQLBI DAX 指南

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

它有一個非常好的功能,稱為(在左側),其中函數按類型分組。因此,例如,如果我正在考慮解析文本字符串,我可以去搜索Text functions

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

它提供了 DAX 具有的所有文本功能。這是快速找到測量所需的DAX 函數的好方法。

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

LuckyTemplates 假期日曆的 DAX 度量

對於假日日期度量,我創建了這一系列,從切片器中獲取日期、假日月份、月份編號和日期表中的日期  

) 函數從選定的那一天開始計算長度。在本例中,它返回文本,因此我必須將它包裹在中以將該文本更改為數值。

然後,我使用函數查找空格的位置並將其包裝成 VALUE,但是說,在選定的日期內搜索空格,從位置 1 開始,如果我沒有在其中找到該字符串,則返回零。

CharsBeforeSpace (空格前字符)只是 SpacePosition。CharsAfterSpace (空格後的字符)的數量就是字符串的長度(SelDayLen)減去空格的位置。由此,我們可以執行FirstParseSecondParse

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

至此,我們現在有兩個變量,一個代表發生的時間,一個代表日期。

然後,我們有一個基本的 ( Calc1st ),我們從 Dates 表中刪除過濾器。然後,我們應用從切片器中選擇的年份、月份名稱以及我們所做的第二次解析中的星期幾的過濾器。

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

同樣,我們對最後一次計算 ( VAR CalcLast )做同樣的事情。

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

一旦我們擁有所有這些,它就會進入 語句,最後一部分是 RETURN 結果。

LuckyTemplates 假日日曆 – 使用 DAX 計算日期

最後,我想帶您了解Celebrated On措施,作為挑戰的附加獎勵。這只是一個簡單的,我在其中獲取了我們在之前的度量中計算的假期日期,轉到 Dates 表,並查找了星期幾名稱。然後我只是做了一個SWITCH語句,我們在其中獲取了 DayLookup 的結果最後,我用RETURN DateAdjust結束它。

LuckyTemplates 假日日曆 – 使用 DAX 計算日期


在 LuckyTemplates 中為假期創建日曆表
LuckyTemplates 自定義日曆:計算月度變化 – 445 個日曆
在 LuckyTemplates 中非標準日期表的時間比較

結論

正如我所提到的,這個 LuckyTemplates 假日日曆挑戰是一個現實世界的問題。我想出的解決方案非常複雜,但在計算特定假期日期方面確實有效。

我希望你從本教程中學到了很多東西。查看完整的視頻教程,了解對 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 網關?所有你必須知道的