What Delegation Actually Means
Delegation is the mechanism by which Power Apps translates a Power Fx formula into a query that the underlying data source executes itself — a SQL WHERE clause, an OData $filter parameter, or a Dataverse FetchXML query — instead of pulling every row into the app's local memory and filtering there. This distinction matters enormously at scale: a delegable formula like Filter(Orders, Status = "Shipped") runs against the full table on the server regardless of size, while a non-delegable formula silently processes only the first page of records (governed by the app's Data row limit setting, which defaults to 2,000 and can be raised to a documented maximum), producing results that look correct in testing but are quietly wrong in production once the table exceeds that threshold.
Cricket analogy: Delegation is like asking Cricinfo's server to compute Virat Kohli's career average against every international innings he's played, versus manually downloading every scorecard PDF and adding them up yourself on a calculator.
Delegable Functions and Operators
Delegation support varies significantly by data source and by function: Dataverse and SQL Server support the widest range, including Filter, LookUp, Sort/SortByColumns, Search, and aggregate functions like Sum, Average, Min, Max, and CountRows, combined with And, Or, and Not; SharePoint supports a narrower subset, notably struggling with certain Choice and Lookup column comparisons and with some string functions when combined in complex ways; Excel supports essentially none. Even within a delegable data source, specific function combinations can break delegation — for example, delegable individually, Filter(Orders, Status = "Open" && Left(CustomerName, 3) = "ACM") may still fail to fully delegate depending on the connector's support for the Left function in a filter predicate, which is why the Power Apps Studio formula bar's delegation warning is the authoritative source of truth, not general rules of thumb.
Cricket analogy: Different data sources supporting different delegable operations is like different cricket boards having different DRS technology available — some grounds have full Hawk-Eye and UltraEdge, others only have basic replay, changing what decisions can be reviewed accurately.
// This looks like two delegable pieces combined, but always check the delegation warning triangle
Filter(
Orders,
Status = "Open" && StartsWith(CustomerName, "ACM")
)
// If flagged, consider a Dataverse calculated column, a SQL view, or narrowing scope with an indexed column insteadPractical Strategies for Non-Delegable Formulas
When a formula can't be delegated, several practical fixes exist depending on the data source: for Dataverse, moving the logic into a server-side calculated or rollup column shifts the computation to a place where it can be indexed and filtered efficiently; for SQL Server, wrapping the logic in a view or stored procedure achieves the same effect by pre-computing the result on the database side before Power Apps ever sees it; and as a general technique across sources, narrowing the query with a delegable pre-filter first (for example, filtering by a delegable date range before applying a non-delegable text search) reduces the working set enough that the non-delegable portion, applied afterward with something like Search() on a Collection, becomes practically safe even though it's technically still capped.
Cricket analogy: Narrowing with a delegable pre-filter first is like a scout first filtering to only matches from the last IPL season (a fast, indexed query) before manually reviewing footage for a specific bowling technique, instead of reviewing every match ever played.
A common and safe workaround is to load a delegable subset into a Collection with ClearCollect(colSubset, Filter(LargeTable, DelegableCondition)) and then run non-delegable logic like Search() or a complex Sort against that smaller local collection — this works well as long as the pre-filter genuinely narrows the set to a manageable size.
Raising the app's Data row limit setting above the default 2,000 does not fix a delegation problem — it only raises the ceiling on how many rows are pulled locally before non-delegable processing happens, which can slow the app down and still silently truncate results once the true row count exceeds the new, higher limit.
- Delegation pushes formula evaluation (Filter, Sort, Search, aggregates) down to the data source instead of pulling all rows into local memory.
- Non-delegable formulas only process up to the app's Data row limit (default 2,000), which can produce silently incomplete results at scale.
- Dataverse and SQL Server support the widest range of delegable functions; SharePoint is moderate; Excel is essentially non-delegable.
- Even individually delegable functions can break delegation when combined in certain ways — always check the formula bar's warning triangle.
- Fixes include server-side calculated columns/rollups, SQL views/stored procedures, and pre-filtering with a delegable condition before a non-delegable step.
- Raising the Data row limit setting is not a real fix for delegation — it only raises the ceiling before silent truncation occurs.
Practice what you learned
1. What does it mean for a Power Fx formula to be 'delegable'?
2. What is the default Data row limit that governs non-delegable query processing?
3. Which data source generally offers the WEAKEST delegation support?
4. Why is raising the app's Data row limit setting NOT a real fix for a delegation warning?
5. What is a recommended strategy when a formula against a large table cannot be delegated?
Was this page helpful?
You May Also Like
Working with Collections
How to create, update, and manage in-memory Collections in Power Apps for local state, offline caching, and processing data that can't be delegated to a server.
Connecting to Dataverse
How to add Microsoft Dataverse as a data source in Power Apps, model relationships and choice columns in Power Fx, and understand its delegation and security advantages.
SQL Server Connector
How to connect Power Apps to Azure SQL Database or on-premises SQL Server, work with stored procedures and views, and understand the connector's delegation behavior and gateway requirements.
Connecting to SharePoint and Excel
How to connect Power Apps to SharePoint lists and Excel workbooks, model columns correctly, and understand the delegation and file-locking limits of each source.
Related Reading
Related Study Notes in Microsoft Technologies
Browse all study notesWindows 10 / UWP Development Study Notes
.NET · 30 topics
Microsoft TechnologiesWindows Batch Scripting Study Notes
Batch · 30 topics
Microsoft TechnologiesMFC (Microsoft Foundation Classes) Study Notes
C++ · 30 topics
Microsoft TechnologiesSilverlight Study Notes
.NET · 30 topics
Microsoft TechnologiesXAML Study Notes
.NET · 30 topics
Microsoft TechnologiesWPF (Windows Presentation Foundation) Study Notes
.NET · 30 topics