LuckyTemplates 自定義查詢函數

LuckyTemplates 自定義查詢函數

對於今天的教程,我們將構建一個 LuckyTemplates 自定義查詢函數,該函數將處理一種常見的難以處理的堆疊數據格式。這種技術很容易在多個報告和多個表格上重複使用。您可以在本博客底部觀看本教程的完整視頻。

這是我最近完成的教程的延續,在該教程中,我們處理了一種常見的難以處理的堆疊數據格式,並使用 Modulo、Pivo​​t 和 Power Query 的一些清理函數將數據轉換為有組織的功能格式。

LuckyTemplates 自定義查詢函數

您很可能需要重複此過程。如果這種類型的格式是由複制和粘貼產生的,它可能會再次發生。因此,在這種情況下,您可能希望構建一個可在多個報告和多個表上重複使用的自定義函數,而不管它們是如何命名的以及這些表中還有什麼。

目錄

如何創建和調試 LuckyTemplates 自定義查詢函數

讓我們就此進入 Power Query。如果我們轉到我們的數據表,在高級編輯器中,我們會得到 M 代碼,說明我們如何最終從該堆棧數據轉到所需的格式。

LuckyTemplates 自定義查詢函數

如果我們想重用它,我們只需右鍵單擊數據並說,創建函數

LuckyTemplates 自定義查詢函數

它說它不會引用任何參數,但是創建一個沒有參數的函數是可以的。我們會回答,是的,因為我們將在進入高級編輯器時添加參數。我們將此函數稱為Unstack – 3 Elements,因為我們得到了原始格式的三行。如果我們有兩行格式,我們可能會構建一個包含兩個或四個元素的單獨格式。

LuckyTemplates 自定義查詢函數

所以現在,我們有了這個 Invoke,我們沒有參數,讓我們轉到 Advanced Editor 並開始處理這個。

LuckyTemplates 自定義查詢函數

首先,我們不需要這個 Source。我們將使用函數參數來定義我們的源。

LuckyTemplates 自定義查詢函數

我們想要定義將要傳入的參數。我們使用左括號和參數名稱來實現。我們稱其為Stack,這將是一列數據,即來自電子郵件地址粘貼的未格式化堆棧數據。

我們希望它以列表的形式出現,並且我們希望它產生一個表,因為當我們將它從單列轉換為多列時,它從一個列表變成一個表。現在,我們需要將該傳入列表轉換為表格,以便我們可以添加我們的索引,啟動我們的 Modulo unpivot,並做我們需要做的所有事情來重新格式化它。

LuckyTemplates 自定義查詢函數

我們稱它為ConvertStack,它將使用一個名為Table.FromList的函數。與許多 M 功能一樣,它完全按照它說的去做。它只需要一個列表。在這種情況下,列表將成為我們的 Stack 列表。然後,我們需要用我們的 ConvertStack 替換這裡的 Source。看起來不錯!我們沒有語法錯誤,所以讓我們點擊完成。

現在它給了我們想要的東西,即選擇列的能力。

LuckyTemplates 自定義查詢函數

然後,我們將選擇 TestData,這是格式錯誤的數據。我們將選擇 Value 列,然後單擊 OK。之後,我們單擊調用。

LuckyTemplates 自定義查詢函數

但是,我們收到此錯誤。很難確定這個錯誤是什麼。自定義函數的問題之一是它們不會分解應用步驟,您只需為整個自定義函數獲取一個步驟。但是在我將向您展示的調試中有一種解決方法。這將使弄清楚這裡發生的事情變得容易得多。

LuckyTemplates 自定義查詢函數

我們暫時不將其作為函數運行,而是將其作為查詢運行。我們將手動啟動該 Stack 調用。我們必須定義 Stack 是什麼,因為我們不是通過在 Invoke 中選擇它的交互來繪製它。因此,我們有 Stack 等於 TestData,以及 TestData 的 Value 列。

LuckyTemplates 自定義查詢函數

它所做的是現在將其分解為應用步驟。這將幫助我們弄清楚為什麼這不起作用。當我們拉入 Stack 時請注意一件有趣的事情。最初,它拉入 TestData[Value],但是當我們將其轉換為表格時,列標題不再是 Value,列標題現在是 Column1。

LuckyTemplates 自定義查詢函數

記住錯誤消息,它找不到 Value 列。找不到值列的原因是 Table.FromList 函數將其重命名為 Column1。

如果我們繼續 Applied Steps,您可以看到它是在我們收到錯誤的 Added Custom 步驟。這是找不到記錄值的地方。

LuckyTemplates 自定義查詢函數

因此,如果我們轉到高級編輯器,我們會找到自定義字段,我們可以看到它在 Text.Remove 中,我們正在刪除那些我們不需要的垃圾字符,但它仍然指的是值字段。我們將其更改為 Column1。同樣,在 Removed Columns 字段中,它指的是 Value,因此我們也將其更改為 Column1。

LuckyTemplates 自定義查詢函數

當我們到達應用步驟的末尾時,它會產生完美的最終結果。

LuckyTemplates 自定義查詢函數

現在我們知道這是正確的,我們還有一件事要做。請記住,為了調試它,我們將自定義函數變成了查詢。因此,現在我們需要獲取該查詢並將其轉回函數。

LuckyTemplates 自定義查詢函數



在 Power Query 自定義列中的 Power Query M 代碼中創建自定義文本清理函數| 查詢編輯器中的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 網關?所有你必須知道的