在 Power Query 中創建自定義文本清理函數

在 Power Query 中創建自定義文本清理函數

在這篇博文中,我們將仔細研究我為 LuckyTemplates TV 正在進行的名為“系列節目創建的文本清理自定義函數。您可以在本博客底部觀看本教程的完整視頻。

對於第 2 週,我們有一些雜亂的數據需要清理。我們的目標是清除兩列中的所有文本值。

對於這個任務,我創建了一個乾淨的文本函數。

在 Power Query 中創建自定義文本清理函數

但首先,讓我們快速瀏覽一下 M 代碼。

在 Power Query 中創建自定義文本清理函數

該函數採用一個名為 myText 的參數。它的值應該是文本類型並且該函數應該返回一個文本值,因為並非下面列出的所有變量都會返回一個文本值。

在 Power Query 中創建自定義文本清理函數

聲明返回類型將導致錯誤。為了防止發生該錯誤,我現在可以將其註釋掉。

在 Power Query 中創建自定義文本清理函數

如果我們想查看第一個變量返回什麼,我們所要做的就是在 in 子句之後按名稱引用它。所以我要復制 ToRemove 變量,將其粘貼到最後一行,然後按“確定”。

在 Power Query 中創建自定義文本清理函數

要查看該函數的結果,我們必須調用它。因此,讓我們向該查詢添加一個自定義列。

在 Power Query 中創建自定義文本清理函數

然後調用我們的函數,選擇這個合併的列,然後按確定。

在 Power Query 中創建自定義文本清理函數

目錄

從空白查詢創建列表

我們現在看到 ToRemove 步驟創建了一個列表。實際上,它是兩個列表的組合。

第一個列表創建了引號,第二個列表是我想刪除的一系列字符。

在 Power Query 中創建自定義文本清理函數

我是如何創建此列表的?

好吧,我使用了一個名為 Txt.ToList 的函數。

您可以通過創建空白查詢、輸入不帶括號的函數名稱然後按 Enter 來訪問內部函數文檔。

在 Power Query 中創建自定義文本清理函數

我們看到 Text.ToList 從給定的文本值返回字符值列表。

讓我們粘貼一些文本並調用此函數。

在 Power Query 中創建自定義文本清理函數

它創建了一個新的查詢,你可以看到這個列表包含了我們在文本中看到的所有字母。

在 Power Query 中創建自定義文本清理函數

記得我添加了一個額外的列表,對吧?我合併了兩個列表,並使用了符號來做到這一點。

讓我們現在重新創建它。我使用了符號和列表初始值設定項,然後輸入了這些引號。

在 Power Query 中創建自定義文本清理函數

我們現在看到報價已添加到此列表中,但為什麼我要創建一個列表?

在 Power Query 中創建自定義文本清理函數

那麼,在我的文本清理功能的下一步中,我使用了一個名為 Text 的 M 函數。消除。

在 Power Query 中創建自定義文本清理函數

您會看到可以輸入文本,然後輸入要從該字符串中刪除的字符列表。

在 Power Query 中創建自定義文本清理函數

讓我們回到我們的文本清理功能。

在 Power Query 中創建自定義文本清理函數

到。Remove 創建了這兩個列表,然後將它們組合成一個列表。

在 Power Query 中創建自定義文本清理函數

然後讓我們粘貼 CleanText 變量。“in”子句調用 M 函數 Text.Remove 並傳遞 myText 變量,然後調用 To.Remove 列表。讓我們看看這是做什麼的。

在 Power Query 中創建自定義文本清理函數

讓我們回到我們的查詢。這不再返回列表,而是返回一些文本值。

在 Power Query 中創建自定義文本清理函數

在 Power Query 中修剪

下一步是修剪。正如您從上圖中看到的那樣,我們在末尾有一些額外的空格和一個尾隨逗號,我們希望擺脫這些。為此,我們可以使用修剪功能。讓我們返回查詢來檢查 M 代碼。

在 M 代碼中,我嵌套了 2 個微調函數。第一個字符串函數刪除了 CleanText 變量前後的額外空格。

在 Power Query 中創建自定義文本清理函數

對於我們擁有的剩余文本,我們還將從結果字符串中刪除空格。

我們還將刪除尾隨的逗號。

在 Power Query 中創建自定義文本清理函數

讓我們看看結果。我將復制變量名稱,將其粘貼到“in”子句之後,然後單擊“完成”。當我們刷新我們的查詢時,您可以看到額外的空格已經消失並且尾隨的逗號已被刪除。

在 Power Query 中創建自定義文本清理函數

在查詢的最後步驟中,我只是替換了一些文本值。

在 Power Query 中創建自定義文本清理函數

在最後一種情況下,我用空格替換了下劃線。讓我們複製它並將其粘貼到“in”子句之後。我還再次啟用了返回類型。

在 Power Query 中創建自定義文本清理函數

讓我們回到我們的查詢並檢查結果——到目前為止,一切都很好!

在 Power Query 中創建自定義文本清理函數

現在,我們不想創建新列來調用我們的函數,對吧?我們可以做的是在我們的合併列中轉換我們的列 1。

我將刪除此自定義列步驟。

在 Power Query 中創建自定義文本清理函數

然後我將使用 UI 為我們創建大部分代碼。在轉換選項卡上,選擇兩列,轉到格式,然後選擇一個函數。

在 Power Query 中創建自定義文本清理函數

選擇哪個功能並不重要,因為這是 UI 生成的 M 代碼。我們現在可以替換該文本。較低的功能...

在 Power Query 中創建自定義文本清理函數

…使用我們的干淨文本功能。希望您明白為什麼我必須在前面添加 fx。沒有以此開頭的“功能”。

在 Power Query 中創建自定義文本清理函數

當我們按確定時,您可以看到我們的文本已被清理。這太棒了。

在 Power Query 中創建自定義文本清理函數

結論

為什麼我們必須在創建自定義清潔功能時遇到所有麻煩?好吧,如果將來您可能不得不重複此步驟或使用類似的邏輯,則可以存儲此函數查詢。

通過這樣做,它將在後期加速查詢開發。另一個很好的理由是這樣做也很有趣。

我希望你喜歡這個教程。如果您這樣做了,請不要忘記訂閱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 網關?所有你必須知道的