查詢編輯器中的函數查詢和運算符

查詢編輯器中的函數查詢和運算符

本教程將討論查詢編輯器中的函數查詢功能。您將學習如何使用和最大化函數查詢來獲得您想要的結果和數據。您還將了解他們如何與運營商合作以產生特定的結果。

目錄

創建函數查詢

Power Query 允許用戶定義將一組參數映射到單個值的自定義函數。為了演示,請右鍵單擊查詢窗格中的空間。然後,單擊新建查詢並選擇空白查詢。

查詢編輯器中的函數查詢和運算符

接下來,打開“高級編輯器”窗口並刪除其中的所有內容。如果要構造自定義函數,則必須以一組括號開頭。然後,在這些括號內定義一個逗號分隔的參數列表。之後,輸入go-to sign,它是等號和大於號的組合,然後是函數體。

在這個例子中,參數是ab,函數體是a + b。將查詢命名為Add2Values

查詢編輯器中的函數查詢和運算符

這就是函數查詢的樣子。

查詢編輯器中的函數查詢和運算符

在查詢窗格中的查詢名稱旁邊,您可以看到fx圖標,表示這是一個函數查詢。

查詢編輯器中的函數查詢和運算符

要調用該函數,請為每個參數輸入一個值,然後按Invoke

查詢編輯器中的函數查詢和運算符

按 Invoke 將創建一個名為Invoked Function的新查詢,其中包含設置參數的結果。在公式欄中,您還會看到它按名稱引用函數查詢並分配參數值。

查詢編輯器中的函數查詢和運算符

要添加來自不同列的值,您也可以使用相同的函數查詢。創建一個新查詢並打開高級編輯器窗口。接下來,輸入以下代碼創建一個小表。

查詢編輯器中的函數查詢和運算符

查詢編輯器中的函數查詢和運算符

調用自定義函數查詢

要在表的每一行調用自定義函數,您可以轉到“添加列”選項卡並選擇“調用自定義函數”

查詢編輯器中的函數查詢和運算符

另一種方法是單擊預覽左上角的迷你表格圖標,然後選擇調用自定義函數。

查詢編輯器中的函數查詢和運算符

如果單擊“調用自定義函數”,將出現一個對話框。輸入AddValues作為列名並選擇Add2Values作為 Function Query。然後,設置每個參數的值。

在此示例中,值位於第 1 列和第 2 列中。

查詢編輯器中的函數查詢和運算符

您可以看到表中添加了一個新列。列內的值是第 1 列和第 2 列的行值之和。

查詢編輯器中的函數查詢和運算符

刪除參數

如果刪除公式中的一個參數,新列中的值將產生錯誤。在此示例中,從公式中刪除了Column2 。

查詢編輯器中的函數查詢和運算符

如果單擊錯誤值旁邊的空格,您將在預覽窗格下方看到錯誤消息。

查詢編輯器中的函數查詢和運算符

自定義函數有一組必需的參數,允許我們創建可選的函數參數。

對於下一步,返回到Add2Values Function Query 並打開 Advanced Editor 窗口。然後,在括號內添加關鍵字optional並單擊 Done。

查詢編輯器中的函數查詢和運算符

如果返回SumExample Table Query,您會看到最後一列中的錯誤值變為空值。將運算符應用於包含 null 的值將始終返回 null。

查詢編輯器中的函數查詢和運算符

另一件需要注意的事情是 Function Query 接受任何類型的參數。這可能會導致問題,因為您可以傳遞一個文本值並引發另一個錯誤。加法運算符不能應用於該數據類型的操作數。

在 Advanced Editor 窗口中,您可以通過添加關鍵字as來鍵入函數。除了鍵入參數外,您還可以在括號後為函數指定返回類型。

查詢編輯器中的函數查詢和運算符

添加參數

添加太多參數也會得到錯誤值。如果您在公式欄中輸入第 2 列和第 3 列,最後一列將顯示錯誤值。

查詢編輯器中的函數查詢和運算符

同樣,如果單擊錯誤值旁邊的空格,您將在預覽窗格下方看到錯誤消息。

查詢編輯器中的函數查詢和運算符

有一個M 功能可以幫助處理這種情況。首先,創建一個新的空白查詢並在公式欄中輸入 Function.From 函數。然後您將看到該功能的文檔。

查詢編輯器中的函數查詢和運算符

為了進行演示,請複制Add2Values Function Query 並打開 Advanced Editor 窗口。然後,在語法的開頭輸入Function.From 。

對於第一個參數,輸入函數作為函數類型。對於第二個參數,輸入List.Sum以求和並返回一個列表。完成後,單擊 Okay 並將查詢重命名為AddValues

查詢編輯器中的函數查詢和運算符

接下來,返回SumExample Table Query 並將 Function Query 更改為AddValues。您會看到 AddValues 列現在具有該列每行值的總和。

查詢編輯器中的函數查詢和運算符

即使只在函數類型中聲明了兩個參數,您也可以使用任意數量的參數調用函數。這是因為所有參數在傳遞給函數之前都被合併到一個列表中。

你如何命名你的參數並不重要。

如果您在Function.From中編寫自定義函數並且需要引用某個項目,則必須使用位置索引運算符來訪問列表中的項目。

了解一元函數

一元函數是您經常看到的函數。許多標準庫函數都將函數作為參數,而那些參數函數通常是一元的。這意味著該函數只接受一個參數。

例如,通過創建一個新的空白查詢來添加一個過濾器示例查詢。接下來,打開高級編輯器窗口並輸入以下語法。

查詢編輯器中的函數查詢和運算符

完成後,您將在預覽窗格中看到一個包含 CustomerID 和 Name 列的表格。將查詢命名為FilterExample

查詢編輯器中的函數查詢和運算符

在函數查詢中編寫代碼

您可以自己編寫代碼,而不是使用用戶界面生成代碼。如果要選擇客戶ID大於2的行,點擊公式欄旁邊的fx ,手動輸入一個步驟。Power Query 自動返回“應用步驟”窗格中最後一步的變量名稱。

接下來,在公式欄中輸入Table.SelectRows函數及其參數。第一個和第二個參數必須分別是一個表和一個作為函數的條件。在此示例中,第一個參數是 ChType 第二個參數是一個自定義函數,它得出大於 2 的客戶 ID。

查詢編輯器中的函數查詢和運算符

另一種方法是使用each關鍵字,它是一元函數的簡寫。它採用單個無名變量作為參數,並由下劃線 ( _ )表示。為了進行演示,請打開“高級編輯器”窗口並更改自定義函數。

查詢編輯器中的函數查詢和運算符

按完成後,您可以看到它生成了相同的結果。

查詢編輯器中的函數查詢和運算符

為了提高公式的可讀性,您可以在訪問字段或列時省略下劃線。

查詢編輯器中的函數查詢和運算符

如果您返回高級編輯器窗口並刪除自定義函數中的下劃線,它仍將返回相同的結果。

查詢編輯器中的函數查詢和運算符

所有表達式彼此相等。但從可讀性和寫作的角度來看,最後一個版本肯定更容易理解。通過用戶界面創建此步驟時,M引擎使用速記符號。


日期表的 M 函數——如何在查詢編輯器中添加參數
在 Power Query 中創建自定義文本清理函數

結論

函數查詢利用並最大化函數來獲取數據。它們有助於從表格或來源中提取或收集特定信息以提供結果。您可以使用這些功能來有效地創建數據報表並提高您的數據開發技能。

梅麗莎


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