在 LuckyTemplates 中計算兩個日期之間的工作日

在 LuckyTemplates 中計算兩個日期之間的工作日

我將向您展示如何計算兩個日期之間的工作日/工作日,無論是計算假期還是不計算假期。上被反复詢問的話題。

我也相信這將是結束這個時間智能係列的好方法,因為它涵蓋了前面討論的許多其他元素。這些元素包括創建假日表、創建擴展日期表以及使用函數等。您可以在本博客底部觀看本教程的完整視頻。

目錄

計算兩個日期之間工作日的方法

我將討論可用於計算工作日的不同方法。

Excel 允許用戶通過使用其NETWORKDAYS函數以直接的方式計算工作日。但是,DAX 沒有這樣的功能,所以我將討論解決這個問題的方法。

一種方法是使用擴展日期表中的一些元素。

另一種選擇是通過我從 thebiccountant.com 博客的 Imke Feldmann 那裡獲得的方法。她創建了一個可以直接從 Power Query 調用的自定義 NetworkDays 函數,從而使該過程更快、更簡單。

為了向您展示這些方法的工作原理,我將使用一個非常常見的場景。

我有一百個匿名的項目。

在 LuckyTemplates 中計算兩個日期之間的工作日

我還有每個項目的開始日期結束日期。

在 LuckyTemplates 中計算兩個日期之間的工作日

我還創建了一個簡單的經過天數度量。這基本上是每個開始日期和結束日期之間的原始天數。我使用函數來執行此操作,這是一個對 datediff 工作日有用的函數。

在 LuckyTemplates 中計算兩個日期之間的工作日

數據模型非常簡單。它包含DatesProjects的表。

在 LuckyTemplates 中計算兩個日期之間的工作日

它還顯示事實表,其中包括Project IDStart DateEnd Date

在 LuckyTemplates 中計算兩個日期之間的工作日

為了進行比較,我還使用 Excel(不是 power bi)計算了 NetworkDays 有和沒有假期)。

在 LuckyTemplates 中計算兩個日期之間的工作日

當然,您也可以做同樣的事情,從 Excel 中導入數據。但這裡的目標是使用 LuckyTemplates 計算工作日數,而無需使用 Excel。

使用 DAX 計算日期之間的工作日

無論何時處理計算日期,在 Dates 表上使用

在 LuckyTemplates 中計算兩個日期之間的工作日

我還使用DATESBETWEEN 來縮小 Start Date 和 End Date 之間的字段。我還添加了IsWorkingDay來應用簡單的布爾邏輯,如果它是工作日,那麼它應該是週末將返回

過濾器完成了這個,只是為了考慮切片器的上下文。

至於帶假期的版本,它與我剛才討論的措施非常相似。

在 LuckyTemplates 中計算兩個日期之間的工作日

它與使用DATESBETWEEN函數的表達式相同。我只添加了一個IsHoliday。

在 LuckyTemplates 中計算兩個日期之間的工作日

同樣,我在最後使用了ALLSELECTED函數。

看看當我將這兩個度量值拖到我的表中時會發生什麼。

在 LuckyTemplates 中計算兩個日期之間的工作日

正如預期的那樣,Workdays w/ Holidays 與 Excel w/ Holidays 列完全匹配Workdays w/o Holidays 列也是如此,它與 Excel w/o Holidays 列匹配

使用 Power Query 計算工作日

thebiccoountant.com 博客的 Imke Feldmann 談到的方法在使用 Power Query 時提供了一個更簡單的解決方案。

在她關於 NETWORKDAYS 函數的博客中,她給出了一個可以在 Power Query 中調用的 M 代碼。

在 LuckyTemplates 中計算兩個日期之間的工作日

只需從她的博客中復制 M 代碼即可。

在 LuckyTemplates 中計算兩個日期之間的工作日

然後,進入Power Query並在New Source下,打開一個空白查詢。

在 LuckyTemplates 中計算兩個日期之間的工作日

進入高級編輯器

在 LuckyTemplates 中計算兩個日期之間的工作日

然後將整個代碼粘貼到頁面中。確保您有一個綠色檢查以確保您的代碼中沒有錯誤。

在 LuckyTemplates 中計算兩個日期之間的工作日

一旦它被調用,它將把你帶到這個模板。

在 LuckyTemplates 中計算兩個日期之間的工作日

我在這裡輸入什麼並不重要,所以我將選擇 2018 年 1 月 1 日至 2020 年 1 月 1 日。

在 LuckyTemplates 中計算兩個日期之間的工作日

這現在將顯示在我的查詢下。我將重命名它,以便我們以後更容易使用。

在 LuckyTemplates 中計算兩個日期之間的工作日

我將其命名為Networkdays

在 LuckyTemplates 中計算兩個日期之間的工作日

現在,我可以開始使用該查詢了。我將進入我的數據

在 LuckyTemplates 中計算兩個日期之間的工作日

然後,在“添加列”下,我將單擊“調用自定義函數”

在 LuckyTemplates 中計算兩個日期之間的工作日

我將調用此NWD並使用Networkdays函數。

在 LuckyTemplates 中計算兩個日期之間的工作日

然後,我將從下面的這些下拉菜單中選擇開始日期結束日期

在 LuckyTemplates 中計算兩個日期之間的工作日

它讓我可以選擇將一周的開始時間從星期一更改為其他日期。

在 LuckyTemplates 中計算兩個日期之間的工作日

為此,星期一可以,所以我將保持原樣。然後,我將單擊“確定”。

在 LuckyTemplates 中計算兩個日期之間的工作日

如您所見,它會立即計算出與Excel NetworkDays列等效的NetworkDays

在 LuckyTemplates 中計算兩個日期之間的工作日

現在,讓我調整一下,這樣我就可以排除假期。我只需要進入我的假期表。

在 LuckyTemplates 中計算兩個日期之間的工作日

如果您還記得模板,Holiday 表是此處的第三個參數。

在 LuckyTemplates 中計算兩個日期之間的工作日

所以我在這裡只使用假期表並引用日期列。

在 LuckyTemplates 中計算兩個日期之間的工作日

我將單擊此處的複選標記以應用這些更改。

在 LuckyTemplates 中計算兩個日期之間的工作日

[00:11:00]
現在,它已經更新並刪除了所有假期。它與沒有假期的Excel NetworkDays列完全相同。

在 LuckyTemplates 中計算兩個日期之間的工作日

我會將此列重命名為 NWD No holiday。

在 LuckyTemplates 中計算兩個日期之間的工作日


將工作日和周末數字添加到日期表中:LuckyTemplates 中的時間智能技術
使用 DAX 在 LuckyTemplates 中展示工作日數字在
LuckyTemplates 中計算平均值:使用 DAX 隔離工作日或週末結果

結論

您會看到我使用的兩種方法彼此非常不同,但它們都產生了相同的結果。這僅表明確實有很多方法可以最大化 LuckyTemplates,即使您要查找的特定 Excel 函數沒有直接對應項也是如此。

這對時間智能係列來說是一個很好的運行。我很高興與 Melissa Dekorte 合作,向您展示所有這些偉大的時間智能場景。

我在這裡真正想強調的一件事是 DAX 是 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 網關?所有你必須知道的