Create Custom M Function in Power Query
In this exercise, we will learn how to create a custom M function in power query.
The function has the following syntax:
Syntax
let
FunctionName = (Parameter1 as Type1, Parameter2 as Type2, ...) as ReturnType => Expression
in
FunctionName as Type3 The type information of the parameters and the function return value are optional.
Example: Basic Custom Function. Let’s say we want to create a custom function to calculate the square of a number.
Step 1: Open the Advanced Editor
- Go to Power Query Editor.
- In the Home tab, click on Advanced Editor.
Step 2: Create the Function
Paste the following code into the Advanced Editor:
Power Query M
let
SquareNumber = (number as number) as number =>
number * number
in
SquareNumber Explanation:
- This function takes a single parameter (number) of type number.
- It returns the square of the given number of datatype number.
Use of created function
We can use the function to add a column in the table. Here, the function with iterate over each row of the table.
Step 1: Click on Add Column and then click on Invoke Custom Function.

We can specify the new column name and then select the function query. Here, the first_function is the query name of the function that we have created previously.

The function will create a new column in the table. The function will run for each run in the table.

The power query code is shown below:
Power Query M
let
MyTable = Table.FromRecords(
{
[CustomerID = 1, Name = "Ashish", Phone = "123-4567", Company = "TCS"],
[CustomerID = 2, Name = "Katrina", Phone = "987-6543", Company = "TCS"],
[CustomerID = 3, Name = "Alia", Phone = "543-7890", Company = "TCS"],
[CustomerID = 4, Name = "Vicky", Phone = "676-8479", Company = "TCS"],
[CustomerID = 5, Name = "Mohini", Phone = "574-8864", Company = "TCS"],
[CustomerID = 6, Name = "Meenakshi", Phone = "574-8864", Company = "TCS"],
[CustomerID = 7, Name = "Esha", Phone = "574-8864", Company = "TCS"],
[CustomerID = 8, Name = "Anjali", Phone = "574-8864", Company = "TCS"]
}
),
return = Table.AddColumn(MyTable, "Squared Values", each first_function([CustomerID]))
in
return Function with Two Arguments
Let’s create a custom Power Query function with two arguments. I'll show a few examples to demonstrate how we can use multiple parameters in a custom function.
Example: Basic Function (Adding Two Numbers) We'll create a function that takes two numbers as inputs and returns their sum.
Step 1: Open the Advanced Editor In the Power Query Editor, go to Advanced Editor and paste the following code:
Power Query M
let
AddNumbers = (number1 as number, number2 as number) as number =>
number1 + number2
in
AddNumbers Explanation:
- Inputs: number1 and number2 of type number.
- Output: The function returns the sum of both inputs.
Example: Find the first element of a list greater than 5, or null otherwise.
Power Query M
let
FirstGreaterThan5 = (list) =>
let
GreaterThan5 = List.Select(list, (n) => n> 5),
First = List.First(GreaterThan5)
in
First,
Results =
[
Found = FirstGreaterThan5({3,7,9}), // equals 7
NotFound = FirstGreaterThan5({1,3,4}) // equals null
]
in
Results The output of the above code is shown below:
