# Functions, predicates, and data sources combine to determine delegation

Completed

Determining when delegation will and will not happen is a combination of several variables. The first thing to consider is the data source. The following table shows the different functions and whether they support delegation for Microsoft Dataverse. In this table, Yes means the data source does the processing across all of the records. No means the data source returns only the first 500 (default) records to Power Apps, and Power Apps then processes the function locally.

1. Numbers with arithmetic expressions like Filter(table, field + 10 > 100) aren't delegable. Language and TimeZone aren't delegable.
2. Doesn't support Trim[Ends] or Len. Supports other functions such as Left, Mid, Right, Upper, Lower, Replace, and Substitute.
3. DateTime can be delegated except for DateTime functions Now() and Today().
4. Supports comparisons. For example, Filter(TableName, MyCol = Blank()).
5. The aggregate functions are limited to a collection of 50,000 records. If needed, use the Filter function to select 50,000 records from a larger set before using the aggregate function.

Additionally, if you use the Filter or LookUp function, then you also use a predicate. The predicate is what allows you to evaluate the formula. The function FirstName = "Rob" uses the = predicate. Some data sources don't support certain predicates. For example, Salesforce doesn't support the IsBlank predicate. So although the formula Filter(SalesforceCustomers, Name = "Contoso") is delegable, the formula Filter(SalesforceCustomers, IsBlank(Name)) isn't delegable.