什麼是 Python 中的自我:真實世界的例子
什麼是 Python 中的自我:真實世界的例子
我將向您展示如何在日期表查詢的 M 函數中添加參數。此示例基於在上提出的一個問題。您可以在本博客底部觀看本教程的完整視頻。
問題是關於如何將一周第一天的編號從 0 切換為 1。請注意,這不會更改工作日的實際開始時間。在此日期表中,一周的開始始終是星期一。它只是將星期一稱為第 1 天而不是第 0 天。
這個過程不一定很複雜,但您確實需要對 M 語言的結構有一個基本的了解。如果您是 LuckyTemplates 會員,可以查看。引言涉及主題。
目錄
M 功能和擴展日期表
讓我從進入Power Query開始。我已經在這裡複製了日期表 M 函數。
我從LuckyTemplates 論壇的M Code Showcase 類別中獲得了M 函數。該代碼位於主題下。
如果我打開Advanced Editor,這就是代碼。
裡面有很多 M 代碼,可能會讓人分心。
創建測試查詢
由於 M 函數中發生了太多事情,我將從一個新的空白查詢開始。
我打算將此命名為Test Query。
接下來,我要打開高級編輯器。
因為我要創建一個函數,所以我要添加一對括號並刪除其中的所有默認代碼。
要啟動該功能,我將聲明一個可選參數。
接下來,我要添加一個變量。我將此變量稱為WDStartNum,因為它將代表工作日的開始編號。我還需要聲明它的類型,所以我將輸入number。
我正在聲明類型以防止錯誤。如果我將它保留為任何類型,這意味著它可以傳遞表格或日期值,而不僅僅是傳遞數字。
下一步是添加let子句和in子句。
在 let 子句下,我需要一個變量名。所以我將調用此變量WDStart。
現在,我需要測試WDStartNum是否已通過。如果它通過,它將不等於 null。所以我要聲明,如果 WDStartNum 不等於 null,我要返回一個值。
至於 in 子句,我希望通過相同的步驟。所以我將把WDStart放在那裡,這是我們之前在 let 子句下命名的變量。
一旦我按下完成,該功能將被創建。所以我將嘗試通過該函數傳遞一個值。
我將嘗試輸入字母“a”。
請記住,之前我聲明該值必須是一個數字。因為它識別出我輸入的值不符合這個要求,所以它不會讓我輸入那個參數。
所以我要刪除它,把空格留空。
單擊 Invoke 後,它返回值 0。
回到我原來的查詢,它指出如果值不等於 null,則應返回 WDStartNum。如果它等於 null,則應返回 0。
所以0是正確的。
這一次,我將嘗試通過更改 TestQuery 中的數字來傳遞一個值。沒錯,一旦我按下回車鍵,它就會返回一個“1”。
現在,讓我嘗試在 TestQuery 中傳遞 2020。一旦我按下回車鍵,它也會返回 2020。
顯然,我不希望這種情況發生。因為我想要一個代表一周開始的值,所以我想要顯示 0 或 1。這意味著我需要創建另一個測試來查看輸入的數字是 0 還是 1。我可以為此使用List.Contains函數。
使用 List.Contains
我創建了一個空白查詢並在不使用括號的情況下輸入了List.Contains 。
一旦我按下回車鍵,我就可以看到關於該功能的文檔。
List.Contains 指示列表是否包含值。
所以它需要一個列表作為第一個參數,然後在後面添加一個值。如果在列表中找到該值,則返回 true。否則,它將返回 false。
我將再次打開高級編輯器,以便對查詢進行必要的更改。
我將使用List.Contains而不是測試一個值是否不等於 null 。
現在,我將給出要應用於此函數的值列表。
我將使用大括號作為列表初始值設定項。在這些花括號內,我將放入 0、1。我將在關閉該括號後添加一個逗號。
對於第二個參數,我將使用 WDStartNum。然後,我將添加右括號。
有了這個,這意味著 0 或 1 應該給我 WDStartNumber。如果放置了 0 或 1 以外的任何內容,我應該得到 0 的結果。
讓我通過將 2020 放入 TestQuery 來測試它。正如預期的那樣,這將返回“0”(零)。
那是因為值 2020 不在列表中。
將參數添加到 M 功能中
現在我確定代碼可以正常工作,我終於可以將它放入實際的日期表和 M 函數中。我將打開高級編輯器,然後復制邏輯。
然後我將進入日期表查詢。
我將通過高級編輯器打開原始M 功能。
然後,我將把我的代碼粘貼到那裡。讓我們確保行尾有一個逗號。
接下來,我將突出顯示並複制我的參數名稱。
然後我將在此處添加該參數。
請注意,我必須先在現有行的末尾添加一個逗號,然後我必須將此參數聲明為可選的。然後我可以放置 WDStartNum 並添加類型。
我添加了參數,還嵌入了邏輯。但我還需要確保獲得預期的結果。所以我要查找涵蓋星期幾的代碼行。
然後,我要添加+ WDStart。
我將單擊完成以關閉編輯器。然後,我將調用查詢。
對於開始日期,我將輸入 2020 年 1 月 1 日,然後我將使用 2020 年 12 月 31 日作為結束日期。
我將使用“7”作為財政年度的開始月份,然後我將“0”作為 WDStartNum。
我將單擊“調用”。現在,我有了日期表。
我將重命名它以確保它可以輕鬆識別。
現在,我會檢查結果。
這是我的DayOfWeek專欄。
它表明星期一返回為 0。
回到論壇中的問題,我需要將周開始的數字更改為 1 而不是 0。所以我將在度量中更改它。
當我按回車鍵時,星期一現在將是第 1 天而不是第 0 天。
查看數字範圍,它現在從 1 到 7 而不是 0 到 6。
如果我傳遞空值會怎樣?
然後星期一的 DayOfWeek 就變回 0。
使用 M 函數創建擴展的 LuckyTemplates 日期表
LuckyTemplates 中 M 代碼初學者指南 為
Power Query 日期表設置動態 StartDate 和 EndDate
結論
這就是您如何將附加參數直接添加到日期表查詢的 M 函數中。正如我之前提到的,這個過程一點也不復雜。只要您有 M 代碼的源代碼,就很容易從那裡開始。
同樣,如果您不了解 M 代碼的工作原理,您可以隨時查看
一切順利,
梅麗莎
***** Learning LuckyTemplates?*****
什麼是 Python 中的自我:真實世界的例子
您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。
在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。
本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。
在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。
我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。
了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。
本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。
如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。
什麼是 LuckyTemplates 網關?所有你必須知道的