I encountered some delegation warning when I used "Filter" on Sharepoint List. So I created a Sharepoint view on the list. May I know is there a way to access the Sharepoint view from PowerApps?
Solved! Go to Solution.
Power Apps can't leverage Views in a SharePoint list to limit the number of records returned. You'll need to reconstruct your SharePoint view as a Filter() function. Can you show us the formula that is giving you the delegation warning?
On a side note. I would not recommend loading a large list (2,000 records or more) as a local collection. Doing so will lead to performance issues during the initial load and most likely result in conflicts when trying to save changes. Find a way to work within the constraints of delegation instead. Its more work but it will result in a better performing and more stable app.
I used this formula: Filter(Supplier, Active = "Yes"). "Active" is a single line text in Sharepoint list.
This formula might result in retrieving more than 2000 records. My objective is to allow the user to select/search the correct
supplier in the list. But some of the suppliers cannot be found because it is might be the 2001th record and above.
Is there any alternative beside using combo box? Thanks!
Hi @sbgoh ,
According to the issue that you mentioned, actually, it is an known issue with CombBox. When you bind your ComboBox to a data source directly or a Filter function, and enable the "Allow Searching" option, the Delegation warning issue would show up.
I agree with your thought almost. If you have faced a Delegation issue within your ComboBox, you could only retrieve first 2000 records from your SP List, even though, the Filter function is delegable (could only retrieve first 2000 records of the filtered result).
As an alternative solution, you could consider disable the "Allow Searching" option for your ComboBox. Then add a Text Input box above the ComboBox to act as Search box. Then you could filter the result in your ComboBox based on the typed search key:
Currently, within PowerApps, there is no other control providing the "Search" functionality except the ComboBox. As another solution, you could consider achieve your needs using a Gallery and a Text Input box (acted as "Text Search Box"):
If you still want to use ComboBox to achieve your needs, you could consider load your SP List records into a collection in your canvas app, then use the collection as data source in your ComboBox. Please check and see if the following thread solution I provided could help in your scenario:
Also please check and see if the following video resource could also help in your scenario:
Note: Above solution may cause performance issue in your canvas app, because, passing data from Power Automate flow to canvas app would consume a lot of CPU resources, memory, and network bandwidth.
Part of being a database designer is planning about the size of your data and understanding the limits of the connection to the data. If you can work with Filter() and StartsWith() there is no problem with SharePoint's delegation no matter how many records you have. However, if you have a need to search within the data in a column you will eventually run into more problems similar to the one you are now facing. The workarounds have been suggested by the others but there are limits as @Pstork1 is pointing out. The advantage of SharePoint is that it is free. The price you pay is that it is gimped with respect to some important PowerApps functions.
My suggestion is to use SharePoint but to plan on migrating to either CDS or Sql in the future. These connectors support millions of records and you can use the Search() function as it is delegated to the server. With respect to SharePoint I have found that the break point is usually somewhere in the 4k record range. This was my formula for collecting up to 4k records from a SharePoint list without duplicates. As I currently have upwards of 30,000 records in my database, I am now using CDS.
ClearCollect(colA, Splist); ClearCollect(colD, Sort(Splist,ID, Descending); Collect(colAll, colA, Filter(colD, Not(ID in colA)); Clear(colA);Clear(colB)
Hi, I am using collection and there is also 2000 limit. 😞
If I used multiple collection will it cause performance issue ?
For your solution that used search text box, if after typing the keyword, the expected result is >2000, will the combo box able to display all the records in the list?
In my formula above, I am creating two collections one sorted ascending and the other descending and then combining them after removing duplicates. You would use colAll as the Items property in your combobox and it will work very well. You can use that formula in the OnVisible property of the screen with the combobox. It works great but only up to 4k list items.
Hi @sbgoh ,
Currently, the "ID" column in SP list could only be delegable with '=' operator. The ">=", ">", ... operator could not be delegable with "ID" column. Please check the following article for more details:
So I do not think the solution @Drrickryp provided above could fix the 2000 Delegation limit. Please take a try with the solution I provided above, check if it could help in your scenario.
For the Text Box solution I provided above, you need to disable the "Allow searching" option for your ComboBox, then the Delegation issue would not show up in your ComboBox. Then the searched result could be displayed in your ComboBox.
Look at it again Kris. There is no problem creating the two collections and. you are not limited by using the ID in a collection like you are in the SharePoint list.
Hi @Drrickryp ,
If the customer's SP List data source records is more than 5000 (assume that there are 5000 records), do you think the collection solution you provided above is working? The ClearCollect function could only retrieve first 2000 records from a SP List at most once time, even though, you use Sort function to get the last 2000 records, if the customer's data source records is 5000, you could only get 1~2000 records and 3000~5000 records, for the 2000~3000 records, how do you do that?
Collection solution is not a better solution for customer's scenario, because, customer's data source records is increasing large and large.
I never suggested that the formula I provided would work for more than 4000 records. In fact, I said that it would not! "It works great but only up to 4k list items."
In my previous post, I made it a point to suggest to @sbgoh that once his list gets much larger than that, he should consider migrating the data to SQL or CDS. Either of these options is preferable to complicated work-arounds to try to manage large data tables in SharePoint.
Check out our new profile badges recognizing authored solutions!
We are excited to announce the Power Apps Super Users!
Did you miss the call? Check out the Power Apps Community Call here.
Join digitally, March 2–4, 2021 to explore new tech that's ready to implement. Experience the keynote in mixed reality through AltspaceVR!