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.
Recent ideas
Allow Managed Private Endpoint to be disabled/enabled per notebook
Could notebooks have an option to use or not use the workspace's Managed Private Endpoint (MPE)? MPE can significantly increase notebook startup time, even for notebooks that don't need private conn...frithjof_v16 hours agoCommunity ChampionNew22Views1like0CommentsMatrix: column totals as a bar chart docked to the edge
What's missing Data bars already work on the Total row and column through conditional formatting, so row totals can be read as length. Column totals cannot: they render as a horizontal bar inside a ...Sayurivalente1 day agoRegular VisitorNew80Views6likes1Comment