Power Query M:日期表中的交替 0-1 模式

Power Query M:日期表中的交替 0-1 模式

本教程重點介紹如何使用 Power Query M number.mod 函數在日期表中創建交替的 0-1 模式。我要向您展示的解決方案來自 LuckyTemplates 的一位社區高級用戶 Rajesh。您可以在本博客底部觀看本教程的完整視頻。

目的是生成一個由四個 0 和四個 1 交替組成的序列,然後在一天中重複它。

Power Query M:日期表中的交替 0-1 模式

Rajesh 使用 Power Query M 函數解決了他的分析和問題分解。話雖如此,讓我們轉到 Power Query。

目錄

Power Query M Number.Mod 函數

Power Query M,特別是 number.mod 函數將成為我們解決方案的核心。它有什麼作用?

您可以通過在公式欄中輸入不帶括號的名稱來檢查任何 M 函數的內部文檔,如此處所示。此函數返回整數除法的餘數。它最多需要三個參數,前兩個,一個數字,以及除數,這也是一個數字。

Power Query M:日期表中的交替 0-1 模式

現在讓我們開始吧。我將選擇包含我準備好的日期範圍的示例查詢。

Power Query M:日期表中的交替 0-1 模式

在許多情況下,number.mod 與索引列結合使用,索引列隨後用作其第一個參數。但我不會那樣做,因為如果你考慮一下,日期值是一個整數。因此,我們可以避免創建一個與 Date 列共享相同粒度的索引,其中每一行都有一個唯一值。

要模擬索引,我們所要做的就是從 Date 列中的每個日期中減去 Date 表中的第一個日期。為此,我們可以將開始日期值存儲在一個變量中,以便我們可以反複使用它。我發現高級編輯器是執行此操作的最佳位置。

所以我將打開高級編輯器窗口並創建一個新變量。我們稱它為StartDate。我在這裡硬編碼了我的第一次約會,所以我只是將它複製並粘貼進去。不要忘記末尾的逗號,我們現在可以用我們的開始日期變量替換第一次約會。

Power Query M:日期表中的交替 0-1 模式

如您所見,沒有任何變化。

Power Query M:日期表中的交替 0-1 模式

為 Power Query M 模式創建自定義列

因此,通過這個迷你表,我們將添加一個自定義列。

Power Query M:日期表中的交替 0-1 模式

我們將此列稱為Pattern,並輸入 Power Query M 函數number.mod。您會在此處看到兩個參數,一個數字作為可為空的數字,一個除數作為一個可為空的數字。所以它需要兩個數字類型的值作為參數。

Power Query M:日期表中的交替 0-1 模式

現在我們沒有數字,對吧?我們有日期,但其中沒有自動類型轉換之類的東西。所以我們需要從日期值中獲取數字。所以我們在這裡輸入number.from然後是我們的Date列,然後減去我們的 StartDate變量。

Power Query M:日期表中的交替 0-1 模式

現在,假設我們的Date 表中的第一個日期返回一個 1,那麼我們的 StartDate 也將返回一個 1。因此,一減一等於零。我希望我們的索引編號以 1 而不是 0 開頭。所以我們必須加一加一。現在一減一等於零加一對第一條記錄返回一。

Power Query M:日期表中的交替 0-1 模式

對於第二條記錄,我們得到 Date 列中日期的二 (2) 值,從等於一的 StartDate 值減去一 (1),再加上我們要加回的值返回二,依此類推. 我們的重複模式基於一系列四個交替值。因此,作為除數,我將傳遞值四 (4)。

Power Query M:日期表中的交替 0-1 模式

讓我們看看它做了什麼。在第四行,我們得到零,在第八行也是如此。因此,每四次出現該記錄都會返回一個零值。

Power Query M:日期表中的交替 0-1 模式

創建一個 IF-THEN-ELSE 結構

讓我們回到我們的客戶對話框並擴展我們到目前為止編寫的邏輯。除了除數,我們需要重複相同的邏輯才能識別出第八次出現。

然而,在第八行,我們想要一個不同的值。因此,為了區分第四次和第八次出現,我們可以使用 IF-THEN-ELSE 結構。這樣,我們可以為第一個返回 true 的邏輯測試返回一個值。

因此,如果,我將在此處粘貼我們的代碼(除數除外),將該除數更改為八,這樣第八行將返回零。因此,如果它等於零,則意味著它無法確定真或假。然後我們想要一個 (1)。否則如果我們的邏輯在這裡確定第四行等於零,那麼我們需要零 (0)。否則我們不想取回價值。所以讓我們添加一個null

Power Query M:日期表中的交替 0-1 模式

現在,讓我們再次檢查我們的邏輯。因此,每出現四次,我們就會得到零。然後,在第八個,我們得到一個。接下來,我們得到零和一,依此類推。

所以這看起來不錯。我們現在要做的就是填寫這些值。

Power Query M:日期表中的交替 0-1 模式

因此,在公式欄內,我們將在開頭添加一個Table.FillUp ,然後添加一些左括號。在代碼的末尾,我們添加了類型編號——我們還需要添加一列作為列表。因此,我們使用逗號,然後使用大括號作為列表初始值設定項,並作為文本值傳入我們的列名Pattern。不要忘記右括號,然後按 OK。

Power Query M:日期表中的交替 0-1 模式


LuckyTemplates 中的 M 代碼初學者指南
日期表的 M 函數 – 如何在查詢編輯器中添加參數
在 LuckyTemplates 中對日期表列進行排序

結論

這是一個非常獨特的場景,老實說,我想不出這個特定模式的應用程序,但希望您能看到使用 Power Query M 函數 number.mod 創建序列的潛力。

有關詳細信息,請觀看下面本教程的完整視頻。

一切順利!

梅麗莎


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