Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. 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