cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
AppsBe-Med
Level: Powered On

Working with more than 2000 records

Is there any method to work with more than 2000 records in PowerApps?

 

When  I open my form which has some Dropdowns and one Gallery I only get one single record instead of 33. 

 

This is my code:

Form: OnVisible: ClearCollect(colAll;Quellendaten)

 

Gallery: Items: SortByColumns(Filter(colAll;If(IsBlank(DropdownAbteilung.SelectedText.Value); true ;Title=DropdownAbteilung.SelectedText.Value)&&If(IsBlank(DropdownKlasse.SelectedText.Value); true ;Klasse=DropdownKlasse.SelectedText.Value)&&If(IsBlank(DatePickerAU.SelectedDate); true ;Datum=DatePickerAU.SelectedDate));"Klasse";If(SortDescending1;Descending;Ascending))

 

Or is there any other way how I can filter records from my SharePoint list? 

2 ACCEPTED SOLUTIONS

Accepted Solutions
v-siky-msft
Level 10

Re: Working with more than 2000 records

Hi @AppsBe-Med ,

 

Oh, Sorry for that the Calculated Column isn't delegable in PowerApps, it should be the real Text/Value column which is delegable.

so we should first to convert the date column to Number column, and then add Number column to Patch expression to keep the column up to date when creating the new items later.

To transfer the Date column to real Number column, I provide a workaround: Create a Number column is SP, use ForAll function to convert date to Number column in PowerApps.

ClearCollect(temcol;'SP list');;ForAll(temcol;Patch('SP list';LookUp('SP list'; ID=temcol[@ID]);{'Date2Num':Value(Text(temcol[@Datum];"ddmmyyy"))}))  
/* temcol[@ID] isn't delegable, set the limit to 2000 */

 Then apply Date2Text column into the code.

SortByColumns(Filter(colAll;If(IsBlank(DropdownAbteilung.SelectedText.Value); true ;Title=DropdownAbteilung.SelectedText.Value)&&If(IsBlank(DropdownKlasse.SelectedText.Value); true ;Klasse=DropdownKlasse.SelectedText.Value)&&If(IsBlank(DatePickerAU.SelectedDate); true ;Date2Num=Value(Text(DatePickerAU.SelectedDate,"ddmmyyy"))));"Klasse";If(SortDescending1;Descending;Ascending))

Hope this can help.

Best regards,

Sik 

View solution in original post

v-siky-msft
Level 10

Re: Working with more than 2000 records

Hi @AppsBe-Med ,

 

Thanks for you debug, that reminds me a thread I ever answered: Hitting Non-Delegable query limit when I think I'm using delegable functions  .

It seems the IF function in the SortByColumns/Filter function will cause the non-delegation error. And the workaround is to move If part function to the beginning of the formula, first to check IF condition. Although you have three if condition, the code could be much complex, I think it deserves a try.

Best regards,

Sik

View solution in original post

16 REPLIES 16
v-siky-msft
Level 10

Re: Working with more than 2000 records

Hi @AppsBe-Med ,

 

The delegation for date comparisons in SharePoint doesn't work (it hasn't worked in a long time, if ever).

Snipaste_2019-11-13_10-54-55.png

My suggestion is to create a new single line text column , take the date from Datum column  and copy it as a string in format 'dd/MM/yyyy'.  and then modify your formulas as below:

 

SortByColumns(Filter(colAll;If(IsBlank(DropdownAbteilung.SelectedText.Value); true ;Title=DropdownAbteilung.SelectedText.Value)&&If(IsBlank(DropdownKlasse.SelectedText.Value); true ;Klasse=DropdownKlasse.SelectedText.Value)&&If(IsBlank(DatePickerAU.SelectedDate); true ;DateConverted2TextColumn=Text(DatePickerAU.SelectedDate)));"Klasse";If(SortDescending1;Descending;Ascending))

 

Hope this can help.

Best regards,

Sik

If my post is helpful for you, please click on “Accept as Solution” to help other members find it more quickly.

hpc1
Level: Powered On

Re: Working with more than 2000 records

Hello Sik,

Thank you for reply.

I changed the formula to retrieve the records as you can see from the attached screenshot filter.jpg.

The problem is not that I couldn't filter by date but I can't get all the applicable records.

If I limit the records for non delegate queries to 500, I receive 1 record.

If I limit the records for non delegate queries to 2000, I get 6 records.

Currently I have about 1100 records in my SharePoint table and by the end of the year I expect to have more than 2000. How can I build a working filter when I have more than 2000 records?

Best regards,

Hans Peter

v-siky-msft
Level 10

Re: Working with more than 2000 records

Hi @hpc1 ,

 

As my suggestion, you have to create a calculated column( single line text) in SharePoint list, take the date from Datum column and copy it as a string in format 'dd.MM.yyyy', then use calculated column to compare the date in filter expression.

Please put =Text([Datum],"dd.mm.yyy") into the formula bar of calculated column.

And modify your formulas as below:

 

SortByColumns(Filter(colAll;If(IsBlank(DropdownAbteilung.SelectedText.Value); true ;Title=DropdownAbteilung.SelectedText.Value)&&If(IsBlank(DropdownKlasse.SelectedText.Value); true ;Klasse=DropdownKlasse.SelectedText.Value)&&If(IsBlank(DatePickerAU.SelectedDate); true ;DateConverted2TextColumn=Text(DatePickerAU.SelectedDate,"dd.mm.yyy")));"Klasse";If(SortDescending1;Descending;Ascending))

Snipaste_2019-11-14_17-59-12.png

Best regards,

Sik

If my post is helpful for you, please click on “Accept as Solution” to help other members find it more quickly.

AppsBe-Med
Level: Powered On

Re: Working with more than 2000 records

Hi Sik,

thanks for your detailed instructions. It works fine as long as I have the data row limit for non-delegable queries at 2000. When I change the value to 500 records, I only get 1 instead of 14 records from the filter.

Best regards,

Hans Peter

v-siky-msft
Level 10

Re: Working with more than 2000 records

Hi @AppsBe-Med ,

 

Do you mean that you have changed to use the Text2Date column to handle your formula?

Is there any delegation warning In the formula?

Can you share more information with some screenshots?

Best regards,

Sik

AppsBe-Med
Level: Powered On

Re: Working with more than 2000 records

Hi Sik,

yes, I was adjusting my SharePoint-list and my app exactly as per your instructions.

When I apply the settings to 500 records for non-delegable queries (Settings.jpg), I get 1 record from my query (500records.jpg). I just realized I only get records which were already recorded last August.

When I apply the settings to 2000 records for non-delegable queries, I get 15 records from my query (2000records.jpg).

Currently I have about 1200 records in my SharePoint table. My consideration is that when my SharePoint list grows over 2000 records, I will have the same problem like I simulated with the 500 records limit.

Best regards,

Hans Peter

v-siky-msft
Level 10

Re: Working with more than 2000 records

Hi @AppsBe-Med ,

 

Oh, Sorry for that the Calculated Column isn't delegable in PowerApps, it should be the real Text/Value column which is delegable.

so we should first to convert the date column to Number column, and then add Number column to Patch expression to keep the column up to date when creating the new items later.

To transfer the Date column to real Number column, I provide a workaround: Create a Number column is SP, use ForAll function to convert date to Number column in PowerApps.

ClearCollect(temcol;'SP list');;ForAll(temcol;Patch('SP list';LookUp('SP list'; ID=temcol[@ID]);{'Date2Num':Value(Text(temcol[@Datum];"ddmmyyy"))}))  
/* temcol[@ID] isn't delegable, set the limit to 2000 */

 Then apply Date2Text column into the code.

SortByColumns(Filter(colAll;If(IsBlank(DropdownAbteilung.SelectedText.Value); true ;Title=DropdownAbteilung.SelectedText.Value)&&If(IsBlank(DropdownKlasse.SelectedText.Value); true ;Klasse=DropdownKlasse.SelectedText.Value)&&If(IsBlank(DatePickerAU.SelectedDate); true ;Date2Num=Value(Text(DatePickerAU.SelectedDate,"ddmmyyy"))));"Klasse";If(SortDescending1;Descending;Ascending))

Hope this can help.

Best regards,

Sik 

View solution in original post

AppsBe-Med
Level: Powered On

Re: Working with more than 2000 records

Hi Sik,

thanks for your instructions.

Unfortunately I still get the same result. All data shown by limitation of non-delegable queries to 2000, only one old record by limitation of non-delegable queries to 500 records.

Best regards,

Hans Peter

 

 

v-siky-msft
Level 10

Re: Working with more than 2000 records

Hi @AppsBe-Med ,

 

Could you check if the Date2Num column has been all converted into number successfully?

What's the type of Title and Klasse column? Can you remove the sortbycolumns function and the first two condition to check if what causes the non-delegation?

I have test on my side: the Num is number column converted from date by ForAll function

Snipaste_2019-11-20_10-02-21.png

Then I set the limitation for non-delegable requires to 1, set the gallery Items as below. Finally it still displays all items matched

Filter(test1,Num = Value(Text(DatePicker1.SelectedDate,"[$-en]ddmmyyy")))

  Annotation 2019-11-20 100325.png

Could you test, as I did, adding more function one by one to debug which function would cause the non-delegable error?

Best regards,

Sik

Helpful resources

Announcements
thirdimage

Power Automate Community User Group Member Badge

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

sixthImage

Power Platform World Tour

Find out where you can attend!

Power Platform 2019 release wave 2 plan

Power Platform 2019 release wave 2 plan

Features releasing from October 2019 through March 2020

fifthimage

Microsoft Learn

Learn how to build the business apps that you need.

Top Kudoed Authors (Last 30 Days)
Users online (5,368)