cancel
Showing results for 
Search instead for 
Did you mean: 
Reply

Delegation warning. This part "Filter" of this formula might not work correctly on large data sets

I have a PowerApp which uses SharePoint List as its data source. The app is working fine. However, a hazard icon is now appearing over my button which has a filter query on OnSelect with the following message,

 

Delegation warning. This part "Filter" of this formula might not work correctly on large data sets. The data source might not be able to process the formula and might return an incomplete data set. Your application might not return correct results or behave correctly if the data set is incomplete

 

I am using the following query,

Refresh('SpList'); Set(filteredItems, Filter('SpList', (Status.Value = "Add new" Or Status.Value = "Rejected") && Register.Email = User().Email)); 
Navigate(scrnDocPending,ScreenTransition.Cover)

This is what I am trying to achieve in the above code,

  • Refresh the SharePoint data source, SpList, for new values.
  • Filter and store the result in a global object, filteredItems.
  • Navigate to a new screen.
  • In the new screen, I am using this object, filteredItems, as a data source of a gallery.

Plz advice, how to remove this warning message?

 

1 ACCEPTED SOLUTION

Accepted Solutions
iAm_ManCat
Most Valuable Professional
Most Valuable Professional

Hi @piyush

 

The issues you've been facing are not to do with the User().Email function - this is client-side and not part of the delegation issue.

 

You are correct regarding the 'squiggle lines' indicating the delegation issue is due to the SharePoint field and not the User().Email - at this current point in time People picker is not a delegable item (neither are any choice or other items which involve .Value / .Id / .anything )

 

A workaround for this would be to create a new Text Column and maybe call it StatusValueActual, then have a flow set up which sets the value for these to Status.Value

 - This new column will now be Delegable

 

Now that you've solved that, you will now likely encounter that Register.Email is also not delegable - follow the same steps as above to create RegisterEmailActual, then you could re-write your code as follows:

 

Refresh('SpList');
Set(
filteredItems,
Filter(
'SpList',
(StatusValueActual = "Add new" || StatusValueActual = "Rejected") && RegisterEmailActual = User().Email
)
);
Navigate(scrnDocPending,ScreenTransition.Cover)

 

What I also like to do (if your users are only using an app and will never see the SP list), is to have this field(s) set from the app during every Edit/New action once you have all of the existing fields filled via Flow. This is to reduce the number of Flows used, however this is not a requirement if you have plenty of users and your dataset is not large or you have enough spare Flows per month/year.

 

Cheers,

ManCat


@iAm_ManCat
My blog


Please 'Mark as Solution' if someone's post answered your question and always 'Thumbs Up' the posts you like or that helped you!


Thanks!
You and everyone else in the community make it the awesome and welcoming place it is, keep your questions coming and make sure to 'like' anything that makes you 'Appy
Sancho Harker, MVP


View solution in original post

14 REPLIES 14

Hello,

 

I think the issue is in User().Email. Try to replace it with "dummy@domain.com" and see if the warning is gone. If so then prepending Set(e, User().Email); to your formula and then replacing "...&& Register.Email = User().Email..."

with "...&& Register.Email = e..." should resolve the issue.

v-monli-msft
Community Support
Community Support

Hi @piyush,

 

I guess the "Status" is the name of a Choice column. The warning shows because that the choice column(Status) is a complex field type and isn't delegable in SharePoint, which results in running your query locally (in the 500 rows).

 

Actually if you have items less than 500, then you do not need to worry about this warning. But if you did, I suggest that you whether using other column types like text/number to filter, or you can change this 500 number to 2000 by going to the File tab, selecting the App Settings in the left hand navigation pane, and looking under Experimental features. Here you will find the "Data row limit for non-delegable queries" setting which you can change from 1 to 2000. This setting is app wide. With care, you can increase this number to fit your scenario. Be aware that as you increase this number your app's performance may degrade, especially for wide tables with lots of columns.

 

Please see this post which lists all the supported delegatable predicates and functions for SharePoint.

https://powerapps.microsoft.com/en-us/tutorials/delegation-list/

 

Regards,

Mona

Community Support Team _ Mona Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Hi @dinusc

I replaced User().Email with a dummy string "User().Email". However, the warning was still there. The warning, a blue squibble appears on the List column and not the value I am passing. For ex, in the following,

Register.Email = User().Email

warning appears on Register.Email

BlueSquibble.PNG

 

And this is happening for both the fields which are complex,

  1. User and,
  2. Choice

For choice field where I am comparing Status.value with a string, the same warning pops up. Normal data types, 

  • text,
  • number &
  • date

is working just fine. Plz advice.

Thanks for your reply @v-monli-msft.

Yes, Status is of type Choice. However, it's our internal column managed by MS Flow. So, if I replace it with a string type then, I think the filter should be executed at SharePoint itself.

 

Currently, the items in the List are less than 500 but, over time it is supposed to surpass this number. Which is why I wanted the filter to be delegated to SharePoint. Because, even if the List has 2000 items, our PowerApps is expected to deal with 5-10 items max. Increasing the limit will work but will slow down the app unnecessarily. 

 

Which is why I wanted to understand is there a way to delegate the User filter to SharePoint as well? I am only using these 2 types. Changing the the choice to string might solve the first part but how to manage the User filter then?

You should be able to assign the User-related values to variables and them using them in your formula. That should address the warning. For example, pre-pend the following to your formula:

Set(e, User().Email);

... and then replace User().Email with e in your formula.

Hi @dinusc

 

I have tried both the ways,

  1. Replaced User().Email with a fixed string value and,
  2. replaced it with a local variable

Still, the warning persist. If you see in the image I provided in my last reply, the blue squibble appears on my SharePoint field and not on User().Email. So, no matter what I place on the right of the equal sign, the blue squibble is constant on the left.

 

@v-monli-msft mentioned that, this might be because my SharePoint field is complex, People field (I have also highligted Choice field in my code snippet which he pointed out)! If that is the case, I am wondering how to handle it for a People field and delegate the filter on the source.

iAm_ManCat
Most Valuable Professional
Most Valuable Professional

Hi @piyush

 

The issues you've been facing are not to do with the User().Email function - this is client-side and not part of the delegation issue.

 

You are correct regarding the 'squiggle lines' indicating the delegation issue is due to the SharePoint field and not the User().Email - at this current point in time People picker is not a delegable item (neither are any choice or other items which involve .Value / .Id / .anything )

 

A workaround for this would be to create a new Text Column and maybe call it StatusValueActual, then have a flow set up which sets the value for these to Status.Value

 - This new column will now be Delegable

 

Now that you've solved that, you will now likely encounter that Register.Email is also not delegable - follow the same steps as above to create RegisterEmailActual, then you could re-write your code as follows:

 

Refresh('SpList');
Set(
filteredItems,
Filter(
'SpList',
(StatusValueActual = "Add new" || StatusValueActual = "Rejected") && RegisterEmailActual = User().Email
)
);
Navigate(scrnDocPending,ScreenTransition.Cover)

 

What I also like to do (if your users are only using an app and will never see the SP list), is to have this field(s) set from the app during every Edit/New action once you have all of the existing fields filled via Flow. This is to reduce the number of Flows used, however this is not a requirement if you have plenty of users and your dataset is not large or you have enough spare Flows per month/year.

 

Cheers,

ManCat


@iAm_ManCat
My blog


Please 'Mark as Solution' if someone's post answered your question and always 'Thumbs Up' the posts you like or that helped you!


Thanks!
You and everyone else in the community make it the awesome and welcoming place it is, keep your questions coming and make sure to 'like' anything that makes you 'Appy
Sancho Harker, MVP


Anonymous
Not applicable

Hi,

I am getting the same error. We have a list to record customer feedback and have an app to add and view feedback.

 

The app has a gallery control on which we are doing a FILTER as part of the search functionality. The query we are using is:

 

Sort(
    Filter (
        '<listName>',
        Or(
            txt_SearchInput.Text in 'Title',
            txt_SearchInput.Text in 'Call Time',
            txt_SearchInput.Text in 'Consultant Manager',
            txt_SearchInput.Text in 'Consultant Title',
            txt_SearchInput.Text in 'Consultant Name'.DisplayName
        ),
          'Created By'.Email=LoggedInUser// the variable I created to avoid using User().Email
    ),
    If(SortListBy="ConsultantName",ConsultantName.DisplayName,SortListBy="Title",Title,SortListBy="CallTime",CallTime,SortListBy="ConsultantManager",ConsultantManager,SortListBy="ConsultantTitle",ConsultantTitle),
    If (
        SortDescendingCode,
        Ascending,
        Descending
    )
)

 

The warning I am getting is : "Delegation Warning. The highlighted part of this formula might not work correctly with column "Title" on large data sets."

 

If I remove the "in" statement for 'Title', the rest of the OR comparisons stay highlighted and the error message then mentions the next column. If I remove everything from OR, the email comparison gets highlighted.

 

Thanks in advance!

Hi,

 

Yes, not a problem - I see your formula uses 'in', which is not a delegable query with SharePoint.

 

You have two options at this point (three technically)

 

1. Change your 'in' to a StartsWith('Title', txt_SearchInput.Text)

Or

2. Collect your entire data source locally using ClearCollect, which can then use 'in' without issue, HOWEVER, if your data source is large, your end-users will end up waiting a Long time for it all to cache locally, and it will have to refresh and recache every time a change is made.

Or

3. Move to a data source such as Azure SQL that supports more delegable queries
(I use SharePoint for everything as well, so I understand that this is not an option everyone can use)

 

If using 1. then your formula becomes:

 

Sort(
    Filter (
        '<listName>',
('Created By'.Email = LoggedInUser) // the variable I created to avoid using User().Email
&& ( StartsWith('Title', txt_SearchInput.Text)

|| StartsWith('Call Time', txt_SearchInput.Text)
|| StartsWith('Consultant Manager', txt_SearchInput.Text)
|| StartsWith('Consultant Title', txt_SearchInput.Text)
|| StartsWith('Consultant Name'.DisplayName, txt_SearchInput.Text) ) ), If(SortListBy="ConsultantName",ConsultantName.DisplayName,SortListBy="Title",Title,SortListBy="CallTime",CallTime,SortListBy="ConsultantManager",ConsultantManager,SortListBy="ConsultantTitle",ConsultantTitle), If ( SortDescendingCode, Ascending, Descending ) )

 

Let me know how you get on with that,

Apologies for the delay in responding but work got really busy!

 

Cheers,

ManCat

 


@iAm_ManCat
My blog


Please 'Mark as Solution' if someone's post answered your question and always 'Thumbs Up' the posts you like or that helped you!


Thanks!
You and everyone else in the community make it the awesome and welcoming place it is, keep your questions coming and make sure to 'like' anything that makes you 'Appy
Sancho Harker, MVP


Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!   This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions in the Forums to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber of SolutionsSuper UsersNumber of Solutions @anandm08  23 @WarrenBelz  31 @DBO_DV  10 @Amik  19 AmínAA 6 @mmbr1606  12 @rzuber  4 @happyume  7 @Giraldoj  3@ANB 6 (tie)   @SpongYe  6 (tie)     Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersSolutionsSuper UsersSolutions @anandm08  10@WarrenBelz 25 @DBO_DV  6@mmbr1606 14 @AmínAA 4 @Amik  12 @royg  3 @ANB  10 @AllanDeCastro  2 @SunilPashikanti  5 @Michaelfp  2 @FLMike  5 @eduardo_izzo  2   Meekou 2   @rzuber  2   @Velegandla  2     @PowerPlatform-P  2   @Micaiah  2     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 3:Community MembersSolutionsSuper UsersSolutionsPower Apps anandm0861WarrenBelz86DBO_DV25Amik66Michaelfp13mmbr160647Giraldoj13FLMike31AmínAA13SpongYe27     Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 4:Community MembersSolutionsSuper UsersSolutionsPower Apps DBO-DV21WarranBelz26Giraldoj7mmbr160618Muzammmil_0695067Amik14samfawzi_acml6FLMike12tzuber6ANB8   SunilPashikanti8

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages

Users online (1,737)