Power BI is turning 10, and we’re marking the occasion with a special community challenge. Use your creativity to tell a story, uncover trends, or highlight something unexpected.
Get startedJoin us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.
Is there a way to transform a text to function definition in M language? What I need is something like Function.From(text). For instance this text contains a function definition with empty body:
TextValue = "(InputColumn1 as text) as any => ..."
This one has 2 parameters:
TextValue = "(InputColumn1 as text, InputColumn2 as number) as any => ..."
I need to transfor this to function like adding a new column with function type:
Solved! Go to Solution.
I was hoping for something I could paste into the Advanced Editor but I'll take a guess at what I think you mean.
Is this close to what you're after?
let
Source = #table({"ListCol"},{{{[name="InputColumn1", type="text"],[name="InputColumn2", type="number"]}},{{[name="InputColumn1", type="text"]}}}),
#"Added Custom" = Table.AddColumn(Source, "ToText", each "(" & Text.Combine(List.Transform([ListCol], each [name] & " as " & [type]), ", ") & ") as any => ""..."""),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "ToFunction", each Expression.Evaluate([ToText]))
in
#"Added Custom1"
The BIccountant has a great blog post on this with a custom fn for you to use.
How can I use Expression.Evaluate here? I read the BIccountant blog. It gave me some idea but I couldn't figure out how to create a function from text. To be clear what I am trying to do is:
I have a table and this table has a column contains input schema as list of records:
{
[name="InputColumn1", type="text"],
[name="InputColumn2", type="number"]
}
My aim is to generate a function like this:
(InputColumn1 as text, InputColumn2 as number) as any => ...
Can you give an explicit example of input and expected output? I can't quite figure out exactly what part you're stuck on.
Actually I had given in my previous answer. My input is:
{
[name="InputColumn1", type="text"],
[name="InputColumn2", type="number"]
}
What I want as output is:
(InputColumn1 as text, InputColumn2 as number) as any => ...
(A function type)
I was hoping for something I could paste into the Advanced Editor but I'll take a guess at what I think you mean.
Is this close to what you're after?
let
Source = #table({"ListCol"},{{{[name="InputColumn1", type="text"],[name="InputColumn2", type="number"]}},{{[name="InputColumn1", type="text"]}}}),
#"Added Custom" = Table.AddColumn(Source, "ToText", each "(" & Text.Combine(List.Transform([ListCol], each [name] & " as " & [type]), ", ") & ") as any => ""..."""),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "ToFunction", each Expression.Evaluate([ToText]))
in
#"Added Custom1"
That is what I exactly want. I didn't expect Expression.Evaluate would be enough because of the word "Evaluate". Very thanks
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
14 | |
13 | |
10 | |
8 | |
7 |
User | Count |
---|---|
17 | |
13 | |
7 | |
6 | |
6 |