日期表的 M 函數——如何在查詢編輯器中添加參數

日期表的 M 函數——如何在查詢編輯器中添加參數

我將向您展示如何在日期表查詢的 M 函數中添加參數。此示例基於在上提出的一個問題。您可以在本博客底部觀看本教程的完整視頻。

問題是關於如何將一周第一天的編號從 0 切換為 1。請注意,這不會更改工作日的實際開始時間。在此日期表中,一周的開始始終是星期一。它只是將星期一稱為第 1 天而不是第 0 天。

這個過程不一定很複雜,但您確實需要對 M 語言的結構有一個基本的了解。如果您是 LuckyTemplates 會員,可以查看。引言涉及主題。

目錄

M 功能和擴展日期表

讓我從進入Power Query開始。我已經在這裡複製了日期表 M 函數

日期表的 M 函數——如何在查詢編輯器中添加參數

我從LuckyTemplates 論壇M Code Showcase 類別中獲得了M 函數。該代碼位於主題下。

日期表的 M 函數——如何在查詢編輯器中添加參數

如果我打開Advanced Editor,這就是代碼。

日期表的 M 函數——如何在查詢編輯器中添加參數

裡面有很多 M 代碼,可能會讓人分心。

創建測試查詢

由於 M 函數中發生了太多事情,我將從一個新的空白查詢開始。

日期表的 M 函數——如何在查詢編輯器中添加參數

我打算將此命名為Test Query

日期表的 M 函數——如何在查詢編輯器中添加參數

接下來,我要打開高級編輯器

日期表的 M 函數——如何在查詢編輯器中添加參數

因為我要創建一個函數,所以我要添加一對括號並刪除其中的所有默認代碼。

日期表的 M 函數——如何在查詢編輯器中添加參數

要啟動該功能,我將聲明一個可選參數

日期表的 M 函數——如何在查詢編輯器中添加參數

接下來,我要添加一個變量。我將此變量稱為WDStartNum,因為它將代表工作日的開始編號。我還需要聲明它的類型,所以我將輸入number

日期表的 M 函數——如何在查詢編輯器中添加參數

我正在聲明類型以防止錯誤。如果我將它保留為任何類型,這意味著它可以傳遞表格或日期值,而不僅僅是傳遞數字。

下一步是添加let子句和in子句。

日期表的 M 函數——如何在查詢編輯器中添加參數

在 let 子句下,我需要一個變量名。所以我將調用此變量WDStart

日期表的 M 函數——如何在查詢編輯器中添加參數

現在,我需要測試WDStartNum是否已通過。如果它通過,它將不等於 null。所以我要聲明,如果 WDStartNum 不等於 null,我要返回一個值

日期表的 M 函數——如何在查詢編輯器中添加參數

至於 in 子句,我希望通過相同的步驟。所以我將把WDStart放在那裡,這是我們之前在 let 子句下命名的變量。

日期表的 M 函數——如何在查詢編輯器中添加參數

一旦我按下完成,該功能將被創建。所以我將嘗試通過該函數傳遞一個值。

我將嘗試輸入字母“a”。

日期表的 M 函數——如何在查詢編輯器中添加參數

請記住,之前我聲明該值必須是一個數字。因為它識別出我輸入的值不符合這個要求,所以它不會讓我輸入那個參數。

日期表的 M 函數——如何在查詢編輯器中添加參數

所以我要刪除它,把空格留空。

日期表的 M 函數——如何在查詢編輯器中添加參數

單擊 Invoke 後,它返回值 0。

日期表的 M 函數——如何在查詢編輯器中添加參數

回到我原來的查詢,它指出如果值不等於 null,則應返回 WDStartNum。如果它等於 null,則應返回 0。

日期表的 M 函數——如何在查詢編輯器中添加參數

所以0是正確的。

這一次,我將嘗試通過更改 TestQuery 中的數字來傳遞一個值。沒錯,一旦我按下回車鍵,它就會返回一個“1”。

日期表的 M 函數——如何在查詢編輯器中添加參數

現在,讓我嘗試在 TestQuery 中傳遞 2020。一旦我按下回車鍵,它也會返回 2020。

日期表的 M 函數——如何在查詢編輯器中添加參數

顯然,我不希望這種情況發生。因為我想要一個代表一周開始的值,所以我想要顯示 0 或 1。這意味著我需要創建另一個測試來查看輸入的數字是 0 還是 1。我可以為此使用List.Contains函數。

使用 List.Contains

我創建了一個空白查詢並在不使用括號的情況下輸入了List.Contains 。

日期表的 M 函數——如何在查詢編輯器中添加參數

一旦我按下回車鍵,我就可以看到關於該功能的文檔。

日期表的 M 函數——如何在查詢編輯器中添加參數

List.Contains 指示列表是否包含值。

所以它需要一個列表作為第一個參數,然後在後面添加一個值。如果在列表中找到該值,則返回 true。否則,它將返回 false。

我將再次打開高級編輯器,以便對查詢進行必要的更改。

日期表的 M 函數——如何在查詢編輯器中添加參數

我將使用List.Contains而不是測試一個值是否不等於 null 。

日期表的 M 函數——如何在查詢編輯器中添加參數

現在,我將給出要應用於此函數的值列表。

我將使用大括號作為列表初始值設定項。在這些花括號內,我將放入 0、1。我將在關閉該括號後添加一個逗號。

日期表的 M 函數——如何在查詢編輯器中添加參數

對於第二個參數,我將使用 WDStartNum。然後,我將添加右括號。

日期表的 M 函數——如何在查詢編輯器中添加參數

有了這個,這意味著 0 或 1 應該給我 WDStartNumber。如果放置了 0 或 1 以外的任何內容,我應該得到 0 的結果。

讓我通過將 2020 放入 TestQuery 來測試它。正如預期的那樣,這將返回“0”(零)。

日期表的 M 函數——如何在查詢編輯器中添加參數

那是因為值 2020 不在列表中。

將參數添加到 M 功能中

現在我確定代碼可以正常工作,我終於可以將它放入實際的日期表和 M 函數中。我將打開高級編輯器,然後復制邏輯

日期表的 M 函數——如何在查詢編輯器中添加參數

然後我將進入日期表查詢。

日期表的 M 函數——如何在查詢編輯器中添加參數

我將通過高級編輯器打開原始M 功能

日期表的 M 函數——如何在查詢編輯器中添加參數

然後,我將把我的代碼粘貼到那裡。讓我們確保行尾有一個逗號。

日期表的 M 函數——如何在查詢編輯器中添加參數

接下來,我將突出顯示並複制我的參數名稱

日期表的 M 函數——如何在查詢編輯器中添加參數

然後我將在此處添加該參數

日期表的 M 函數——如何在查詢編輯器中添加參數

日期表的 M 函數——如何在查詢編輯器中添加參數

請注意,我必須先在現有行的末尾添加一個逗號,然後我必須將此參數聲明為可選的。然後我可以放置 WDStartNum 並添加類型

我添加了參數,還嵌入了邏輯。但我還需要確保獲得預期的結果。所以我要查找涵蓋星期幾的代碼行。

日期表的 M 函數——如何在查詢編輯器中添加參數

然後,我要添加+ WDStart

日期表的 M 函數——如何在查詢編輯器中添加參數

我將單擊完成以關閉編輯器。然後,我將調用查詢。

對於開始日期,我將輸入 2020 年 1 月 1 日,然後我將使用 2020 年 12 月 31 日作為結束日期。

日期表的 M 函數——如何在查詢編輯器中添加參數

我將使用“7”作為財政年度的開始月份,然後我將“0”作為 WDStartNum。

日期表的 M 函數——如何在查詢編輯器中添加參數

我將單擊“調用”。現在,我有了日期表。

日期表的 M 函數——如何在查詢編輯器中添加參數

我將重命名它以確保它可以輕鬆識別。

日期表的 M 函數——如何在查詢編輯器中添加參數

現在,我會檢查結果。

這是我的DayOfWeek專欄。

日期表的 M 函數——如何在查詢編輯器中添加參數

它表明星期一返回為 0。

日期表的 M 函數——如何在查詢編輯器中添加參數

回到論壇中的問題,我需要將周開始的數字更改為 1 而不是 0。所以我將在度量中更改它。

日期表的 M 函數——如何在查詢編輯器中添加參數

當我按回車鍵時,星期一現在將是第 1 天而不是第 0 天。

日期表的 M 函數——如何在查詢編輯器中添加參數

查看數字範圍,它現在從 1 到 7 而不是 0 到 6。

日期表的 M 函數——如何在查詢編輯器中添加參數

如果我傳遞空值會怎樣?

日期表的 M 函數——如何在查詢編輯器中添加參數

然後星期一的 DayOfWeek 就變回 0。

日期表的 M 函數——如何在查詢編輯器中添加參數


使用 M 函數創建擴展的 LuckyTemplates 日期表
LuckyTemplates 中 M 代碼初學者指南 為
Power Query 日期表設置動態 StartDate 和 EndDate

結論

這就是您如何將附加參數直接添加到日期表查詢的 M 函數中。正如我之前提到的,這個過程一點也不復雜。只要您有 M 代碼的源代碼,就很容易從那裡開始。

同樣,如果您不了解 M 代碼的工作原理,您可以隨時查看

一切順利,

梅麗莎

***** Learning LuckyTemplates?*****







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