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
Dedicated Fabric Message Center to communicate planned Fabric Changes
Summary Microsoft recently rolled out a change that automatically enabled the Item Recovery tenant setting in Microsoft Fabric for tenants where the setting had not been explicitly configured. Accor...Edgar_1 hour agoNew MemberNew4Views0likes0CommentsWorkspace-Level Control of Storage Modes (Import vs DirectQuery vs Direct Lake)
Organizations operating under strict governance and data residency requirements need the ability to control which storage modes are permitted within a workspace. Currently, report authors can choose...masoodaftab2 hours agoNew MemberNew2Views0likes0CommentsGranular Workspace Permissions Beyond Workspace Roles
a { text-decoration: none; color: #464feb; } tr th, tr td { border: 1px solid #e6e6e6; } tr th { background-color: #f5f5f5; } The current workspace access model is limited to the predefined workspac...masooddevcorp2 hours agoNew MemberNew5Views1like0CommentsAccessibility issue in the Share dialog of embedded Power BI reports
Accessibility issue in the Share dialog of embedded Power BI reports I would like to share an accessibility finding identified while testing an embedded Power BI report published as part of the cont...ugartema6 hours agoNew MemberNew10Views1like0Comments