cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
TurboTape
Level: Powered On

Delegation not working

I have list of suppliers that has passed 500 items, so I start working on my delegation warnings to be able to search in all suppliers. 

 

I have done this on other lists and it has worked fine, but today I can't get any result from items 501 and up. 

 

I have a very simple function like:

SortByColumns(
  Filter(
    ShowColumns(
     Firma;
       "ID";"Title");
          inp_Søkeord.Text in Title);
    "Title";Ascending
    )

I have also tried a Search instead of Filter (also without Sorting and ShowColumns), but same result.

Search(
        ShowColumns(
            Firma;
            "ID";"Title";"compType";"telephone";"email");
            inp_Søkeord.Text;"Title")


The only thing that works is if I use ID>500 in the filter. 
I get no delegation warning on both filter and search. 
I use ShowColumns as I get delegation warning if I don't. The SharePoint list has some 20 columns. 


Am I missing something? 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Community Support Team
Community Support Team

Re: Delegation not working

Hi @TurboTape ,

Have you set the "Data row limit for non-delegable queries" option within the Advanced settings of App settings to the maximum value -- 2000?

 

Based on the issue that you mentioned, I think this issue is related to the ShowColumns() function in your formula. Actually, the ShowColumns() function partially support delegation in PowerApps. Formulas in arguments of the ShowColumns() function can be delegated. However, the output of the ShowColumns() functions are subject to the non-delegation record limit. Please check the here for more details.

In other words, the ShowColumns() function could only retrieve 500 records at most in default. As an fixed solution, please consider set the "Data row limit for non-delegable queries" option within the Advanced settings of App settings of your app to the maximum value -- 2000. Then try your formula agian, check if the issue is solved.

More details about changeing the limit, please check the following article:

https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/delegation-overview#changing-the-limit

 

If the amount of your SP List reocrds is more than 2000, please check and see if the solution mentioned within the following thread would help in your scenario:

https://powerusers.microsoft.com/t5/General-Discussion/Pulling-in-large-ish-SQL-tables/m-p/243777#M7...

On your side, please consider set the OnStart property of the App control to following (I assume that you have 5000 records in your SP list):

Concurrent(
           ClearCollect(Col1, Filter('YourSPList', ID >= 1 && ID <= 2000));
ClearCollect(Col2, Filter('YourSPList', ID >= 2001 && ID <= 4000));
ClearCollect(Col3, Filter('YourSPList', ID >= 4001 && ID <= 6000)) );
Collect(MergedCollection; Col1; Col2; Col3)

Then set the Items property of your Gallery to following:

SortByColumns(
             Filter(
                    MergedCollection;             /* <-- Use the merged collection as data source in your app. The Delegation limit is not applied to Collection */
                    inp_Søkeord.Text in Title
); "Title";
Ascending
)

please take a try with above solution, then check if the issue is solved.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
6 REPLIES 6
Super User
Super User

Re: Delegation not working

@TurboTape 

It's not so much that you are dealing with a delegation error as much as you are just dealing with a record limit issue.

First obvious correction is - you can bump up your number of records returned from 500 to 2000 in your advanced app settings.  Of course, this is just a bandage until you hit 2000.

 

Your first formula is fine except, again dealing with record limits, your inner ShowColumns function will only return the maximum allowed records for your App - assuming you have it set to the default of 500.  So, you will not get anything beyond that.

The same applies for your second function.  Again the limit will be 500 and you'll not find anything beyond that.

 

So, I'd first consider bumping up the maximum to get you by the issue at hand.  Then, you will need to consider other options to pull the entire list locally into a collection and then perform your functions against that.  

As this is SharePoint - be aware that the ID column is not delegable for anything except '='.  So, the > and < operators will NOT delegate.  

 

I hope this is helpful and gives you some guidance for the moment.

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
Highlighted
ProNewbie
Level: Powered On

Re: Delegation not working

Hi @TurboTape , this is a delegation workaround that I've found a while ago :

https://blog.coeo.com/davidmorrison/powerapps-500-record-limit-delegation-and-how-to-work-around-it

Also, in the app settings there is an option to modify the delegation row limit to a maximum of 2000.

 

Hope it helps Smiley Happy

Community Support Team
Community Support Team

Re: Delegation not working

Hi @TurboTape ,

Have you set the "Data row limit for non-delegable queries" option within the Advanced settings of App settings to the maximum value -- 2000?

 

Based on the issue that you mentioned, I think this issue is related to the ShowColumns() function in your formula. Actually, the ShowColumns() function partially support delegation in PowerApps. Formulas in arguments of the ShowColumns() function can be delegated. However, the output of the ShowColumns() functions are subject to the non-delegation record limit. Please check the here for more details.

In other words, the ShowColumns() function could only retrieve 500 records at most in default. As an fixed solution, please consider set the "Data row limit for non-delegable queries" option within the Advanced settings of App settings of your app to the maximum value -- 2000. Then try your formula agian, check if the issue is solved.

More details about changeing the limit, please check the following article:

https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/delegation-overview#changing-the-limit

 

If the amount of your SP List reocrds is more than 2000, please check and see if the solution mentioned within the following thread would help in your scenario:

https://powerusers.microsoft.com/t5/General-Discussion/Pulling-in-large-ish-SQL-tables/m-p/243777#M7...

On your side, please consider set the OnStart property of the App control to following (I assume that you have 5000 records in your SP list):

Concurrent(
           ClearCollect(Col1, Filter('YourSPList', ID >= 1 && ID <= 2000));
ClearCollect(Col2, Filter('YourSPList', ID >= 2001 && ID <= 4000));
ClearCollect(Col3, Filter('YourSPList', ID >= 4001 && ID <= 6000)) );
Collect(MergedCollection; Col1; Col2; Col3)

Then set the Items property of your Gallery to following:

SortByColumns(
             Filter(
                    MergedCollection;             /* <-- Use the merged collection as data source in your app. The Delegation limit is not applied to Collection */
                    inp_Søkeord.Text in Title
); "Title";
Ascending
)

please take a try with above solution, then check if the issue is solved.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
TurboTape
Level: Powered On

Re: Delegation not working

Thanks for detailed explanation @v-xida-msft . I will test the solutions you mentioned. 

Just to clearify. My understanding of delegations was that even if you had tens of thousands of record, a delegation would get the data you were asking for (if using a delegable function) and the result is within the limit of data row limit. Is this correct?

 

Also, I used ShowColumns to reduce the amount of data read by Powerapps, as I seldom need all the columns in one gallery. I also got a delegation warning if I did not use ShowColumns that is somewhat confusing as you say it only partially supports delegation. 

 

As my Powerapps data is going to get very large by time, I have started to test moving data to SQL and using query to limit data to only what the user needs. 

 

Anyway, thanks a lot for the extensive explanation and I will look into it in details, and I'm sure I will find a solution I can live with. Smiley Happy

 

//TurboTape

Community Support Team
Community Support Team

Re: Delegation not working

Hi @TurboTape ,

Based on the statement that you mentioned, I think you have some misunderstanding on Delegation in PowerApps.

 

If you apply a Delegable function to a Delegable data source which has tens of thousands of record, PowerApps would delegate the data process to data source rather than moving the data to the app for processing locally. In other words, it would not be affected by the data row limit.

Note: The Data row limit is only applied to non-delegable queries.

 

The ShowColumns() function partially support delegation in PowerApps. Formulas in arguments of the ShowColumns() function can be delegated, but the output of the ShowColumns() functions are subject to the non-delegation record limit. So the ShowColumns() function would be affected by the data row limit. Please check the here for more details.

In default, if the amount of your data source records is more than 500, the ShowColumns() function could only process first 500 records. You could change the "Data row limit for Non-delegable queries" option to 2000 (maximum value), so the ShowColumns() function could process 2000 records.

 

In addition, I think the alternative solution I provided above could also achieve your needs. You could consider take a try with it, check if it could help in your scenario.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
TurboTape
Level: Powered On

Re: Delegation not working

To wrap it up (see attached screenshot for details). 

Filter/Search in SharePoint lists will only look in the first 500 (or whatever your limit is) rows. In my case, line number 635 will not show if I try to search for it by name. 

 

Filter by ID in Sharepoint works on dataset greater than 500, but not sure how useful it is to search for the ID Man Happy. (I found ID 635). 

 

Filter/search in SQL (Azure SQL in my case) works fine also on the name field (or other fields).  My [dbo].[PrisListe] contains about 20 000 rows. If I try CountRows on the SQL I only get 500 (Same as for Sharepoint list).

 

This was where my confusion originates from, as I know I had a working search function on a large dataset [PrisListe] that was working fine. I thought the SharePoint lists worked the same way, but I guess not. 

 

 

 

 

Helpful resources

Announcements
firstImage

Watch Sessions On Demand!

Continue your learning in our online communities.

SecondImage

Follow PowerApps on Twitter

Stay Up-to-Date by following PowerApps on Twitter

Top Community Contributors for July 2019

Top Community Contributors for July 2019

Let's thank our top community contributors

Power Platform 2019 release wave 2 plan

Power Platform 2019 release wave 2 plan

Features releasing from October 2019 through March 2020

FirstImage

Power Platform World Tour

Coming to a city near you

thirdimage

PowerApps Community User Group Member Badge

Fill out a quick form to claim your user group badge now!

FourthImage

Join PowerApps User Group!!

Connect, share, and learn with your peers year-round

FifthImage

Dynamics 365 and Power Platform April 2019 Release notes

Features releasing from April 2019 through September 2019!

Users Online
Currently online: 46 members 4,353 guests
Please welcome our newest community members: