The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends September 15. Request your voucher.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.