Dynamically Invoke a Function by Name in Power Query M

Looks up and calls a query or function using its name as text, rather than referencing it directly.

Advanced M FunctionsAdvancedexpression.evaluatedynamicinvoke

Power Query M code

let
    FunctionName = "fnLoadCsv",
    Arguments = {"C:\Data\sales.csv"},
    ResolvedFunction = Expression.Evaluate(FunctionName, #shared),
    Result = Function.Invoke(ResolvedFunction, Arguments)
in
    Result

Notes

FunctionName must exactly match an existing query name in this file. Only use this with trusted, hardcoded names - never build FunctionName from external input.

Requirements

How to use this snippet

  1. In Power BI Desktop, choose Transform data to open Power Query, then open the Advanced Editor on a query (or start from a blank query).
  2. Paste the snippet and replace the placeholder names (tables, columns, file paths) with your own. Check the requirements above first.
  3. Run it through the Power Query M Formatter to tidy the layout.

Related Power Query M snippets

More Power Query M resources

Browse all 145 snippets in the Power Query M Code Snippets, or search the library for something similar to Dynamically Invoke a Function by Name.