Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends September 15. Request your voucher.

Create a #default record for use in Power Query

Similar to the #shared record, which contians all functions plus all tables created in PowerBI, create a #default (controlled) record of default functions available in powerBI Power Query that can be used in conjunction with Expression.Evaluate.

 

While #shared could be used at the moment, using #shared will cause Dynamic Data source errors when publishing a report to a workspace, meaning reports that use #shared cannot be auto-refreshed. Creating a #default list of Microsoft controlled functions (like Table.AddColumn, etc) excluding user generated queries could be implemented that people can use without having the dynamic data source restrictions and as it is Microsoft controlled, this could be implemented as "Safe" to limit dynamic data source issues. 

 

Currently the workaround would be to create a manual record, like 

Expression.Evaluate(Source,[...])

with the record containing a large list of every default function used in the function that is evaluated, for example (for Text funcitons only):

 

[
    Text.AfterDelimiter=Text.AfterDelimiter,
    Text.At=Text.At,
    Text.BeforeDelimiter=Text.BeforeDelimiter,
    Text.BetweenDelimiters=Text.BetweenDelimiters,
    Text.Clean=Text.Clean,
    Text.Combine=Text.Combine,
    Text.Contains=Text.Contains,
    Text.End=Text.End,
    Text.EndsWith=Text.EndsWith,
    Text.Format=Text.Format,
    Text.From=Text.From,
    Text.FromBinary=Text.FromBinary,
    Text.InferNumberType=Text.InferNumberType,
    Text.Insert=Text.Insert,
    Text.Length=Text.Length,
    Text.Lower=Text.Lower,
    Text.Middle=Text.Middle,
    Text.NewGuid=Text.NewGuid,
    Text.PadEnd=Text.PadEnd,
    Text.PadStart=Text.PadStart,
    Text.PositionOf=Text.PositionOf,
    Text.PositionOfAny=Text.PositionOfAny,
    Text.Proper=Text.Proper,
    Text.Range=Text.Range,
    Text.Remove=Text.Remove,
    Text.RemoveRange=Text.RemoveRange,
    Text.Repeat=Text.Repeat,
    Text.Replace=Text.Replace,
    Text.ReplaceRange=Text.ReplaceRange,
    Text.Reverse=Text.Reverse,
    Text.Select=Text.Select,
    Text.Split=Text.Split,
    Text.SplitAny=Text.SplitAny,
    Text.Start=Text.Start,
    Text.StartsWith=Text.StartsWith,
    Text.ToBinary=Text.ToBinary,
    Text.ToList=Text.ToList,
    Text.Trim=Text.Trim,
    Text.TrimEnd=Text.TrimEnd,
    Text.TrimStart=Text.TrimStart,
    Text.Type=Text.Type,
    Text.Upper=Text.Upper
]

 This puts the onus on end users maintaining a list, while the list should already be available.
 

Status: New