I have a yes/no toggle & would like to use it to filter the content of a gallery.
However, If I use an If() expression (to incorporate the true/false output of the toggle), I encounter a delegation warning on the filter.
Can anyone suggest a different way to incorporate the toggle without involving a delegation warning?
At present, my code (with the delegation warning) looks like this & my toggle is labelled TogProjHomeFilter (the entire if() expression is marked with the delegation warning):
Sort(
Filter(
Projects,
ProjectSearch.Text in 'Project Name' || ProjectSearch.Text in Customer,
If(
TogProjHomeFilter.Value = true,
'Opportunity Status'.'Projects Home Filtered' <> "no",
'Opportunity Status'.'Projects Home Filtered' <> "yes"
),
IsBlank(ProjectStatusSearch.Selected.Forecasting) || 'Opportunity Status'.Forecasting = ProjectStatusSearch.Selected.Forecasting,
IsBlank(ProjectStateSearch.Selected.Abbreviation) || State.Abbreviation = ProjectStateSearch.Selected.Abbreviation
),
'Approx Close',
Ascending
)
Solved! Go to Solution.
Hi @Medoomi ,
I am a Sharepoint user, but normally the documentation I refer to for DataVerse is correct, however if you are not getting Delegation warnings on the in Filter, that is good. If you want creative, try the below.
With(
{
wToggle:
If(
TogProjHomeFilter.Value,
"no",
"yes"
)
},
Sort(
Filter(
Projects,
(
ProjectSearch.Text in 'Project Name' ||
ProjectSearch.Text in Customer
) &&
'Opportunity Status'.'Projects Home Filtered' <> wToggle &&
(
IsBlank(ProjectStatusSearch.Selected.Forecasting) ||
'Opportunity Status'.Forecasting = ProjectStatusSearch.Selected.Forecasting
) &&
(
IsBlank(ProjectStateSearch.Selected.Abbreviation) ||
State.Abbreviation = ProjectStateSearch.Selected.Abbreviation
),
'Approx Close'
)
)
)
Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.
Hi @Medoomi ,
Firstly, the in Filter is not Delegable - so you would have to use
StartsWith('Project Name',ProjectSearch.Text) || StartsWith(Customer,ProjectSearch.Text),
Also is the toggle "attached" to a field? Boolean (yes/no) fields are not Delegable, but I don't think that is the problem here. You are referring to 'Opportunity Status'.'Projects Home Filtered', and the Filter is on Projects. What is this reference to (another list or a field in Projects)?
Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.
Thx @WarrenBelz
Opportunity Status'.'Projects Home Filtered', is simply a text list of yes/no values. It is related to Projects as a lookup field within Projects.
Edited to add:
I could easily be wrong, but so far, I haven't encountered a delegation warning when using:
ProjectSearch.Text in 'Project Name' || ProjectSearch.Text in Customer
It is the If() portion of the formula which brings the delegation warning.
Regarding the toggle, I am not sure what you mean by attached. It is largely unaltered from defaults, so it outputs true/false...
Hi @Medoomi ,
That is your second Delegation issue - LookUp fields are not Delegable. I have a blog on Delegation that may have some suggestions on collections. You unfortunately cannot "pre-filter" this as all the other filters have a possibility of containing all records.
Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.
Thx again @WarrenBelz
Hmmm, maybe to change the question then somewhat, the following code currently filters the gallery with delegation:
Sort(
Filter(
Projects,
ProjectSearch.Text in 'Project Name' || ProjectSearch.Text in Customer,
'Opportunity Status'.'Projects Home Filtered' <> "yes",
IsBlank(ProjectStatusSearch.Selected.Forecasting) || 'Opportunity Status'.Forecasting = ProjectStatusSearch.Selected.Forecasting,
IsBlank(ProjectStateSearch.Selected.Abbreviation) || State.Abbreviation = ProjectStateSearch.Selected.Abbreviation
),
'Approx Close',
Ascending
)
The line I would like to have a user change/toggle/alter, is this one:
'Opportunity Status'.'Projects Home Filtered' <> "yes"
I.e. I would be delighted if I could use a control to toggle the "yes" in this line above to a "no."
Is there a way I could do this creatively, or even have the toggle output text so it could be incorporated into the formula?
Hi @Medoomi ,
What is your data source type (I am assuming SharePoint)? Also why to you have <> "yes" when you could use = "no" ?
I can assure you the in Filter is not Delegable in SharePoint, neither are Lookup fields (they are a bit worse actually). Can I correctly assume here that 'Opportunity Status' is a Lookup field in Projects pointing at another list (the name would be helpful) and that 'Projects Home Filtered' is a field in that other list? If so, what is the likely maximum size of that list?
Thanks again @WarrenBelz
My data source is DataVerse. I don't know if this explains why I do not have a delegation warning on the code I posted. In any case, the table Projects has a likely maximum size of 5000 records, so it would be nice to avoid delegation warnings.
I used a <> "yes" mainly because the code/table was in progress & I wished to include records that had blank values.
You are also correct that 'Opportunity Status' is a lookup field in Projects. It points to the table 'Opportunity Status'. And yes, 'Projects Home Filtered' is a field in that table.
I am open to creative solutions to the delegation warning... but like I mentioned, I only see a delegation warning when I introduce an If() clause to the filter. With the following code, it *seems* to work, I am just unsure how to introduce a toggle/button/something to turn the clause on and off (use a variable?)
'Opportunity Status'.'Projects Home Filtered' <> "yes"
Hi @Medoomi ,
I am a Sharepoint user, but normally the documentation I refer to for DataVerse is correct, however if you are not getting Delegation warnings on the in Filter, that is good. If you want creative, try the below.
With(
{
wToggle:
If(
TogProjHomeFilter.Value,
"no",
"yes"
)
},
Sort(
Filter(
Projects,
(
ProjectSearch.Text in 'Project Name' ||
ProjectSearch.Text in Customer
) &&
'Opportunity Status'.'Projects Home Filtered' <> wToggle &&
(
IsBlank(ProjectStatusSearch.Selected.Forecasting) ||
'Opportunity Status'.Forecasting = ProjectStatusSearch.Selected.Forecasting
) &&
(
IsBlank(ProjectStateSearch.Selected.Abbreviation) ||
State.Abbreviation = ProjectStateSearch.Selected.Abbreviation
),
'Approx Close'
)
)
)
Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.
I'm not really seeing a solution to my problem here.
With() statements are amazing tools to abstract logic into a delegable format, but my issue is that the With() statement doesn't solve the problem when the logic which needs to be toggled is a decision between matching, for instance, one explicit value vs. any value.
Let's say I want a toggle that filters a SharePoint list by a true/false (Yes/No) column. Sometimes I want to see all the records. Sometimes I want to see records matching a specific value, true but not false, or false but not true. Well ok, that's easy enough to fix. Just have a Switch() or If() statement to step through each of the possible toggle conditions and just run the Filter('SharePoint List', conditionAorB) again for each condition.
Well that would be no problem if you had just one toggle, but what if you have several? Now you have a scenario where each non-delegable toggle must be split up into as many filter conditions as necessary and permutated against the filter conditions of all the other toggles....
Two toggles with two conditions each, that's four separate Filter() statements. Three toggles with two conditions each requires six separate versions of the Filter(), four toggles with two conditions needs eight, and so on.
If the toggle conditions are as simple as xyz=true and xyz=false, then you can implement that toggle without extra versions of the same Filter(). But if you need the toggle to switch between xyz=true and xyz=Or(true,false,null), for example, well I'm not really sure there is a way to delegate that.
Another example, say you have a text column that needs to either match a certain string or match any string, well you can't do IsMatch(columnName,Any) because that's not delegable. I wonder if you could do StartsWith(columnName,"")??? I don't think I've ever tested that, but it seems logical... All strings start with an empty string, right? If filtering on <StartsWith(columnName,"")> is the same as filtering on <true>, then the toggle would simply set some variable to either the empty string or some other string of interest, and then you'd be all set. I might test that later but it doesn't solve my use case. Actually, Randy Hayes confirms that here. So, that should eliminate a few of my toggles which require a sort of "wildcard" logic, because you don't need a wildcard operator to filter a blank text query.
Anyway, is there a wildcard operator for SharePoint requests in PowerApps?
Another thing I found that doesn't work is filtering on <(varBool || columnBool)>, whereas <(varBoolA || varBoolB)> and <columnBool> are both perfectly delegable! That makes no sense to me.
I think what I have to do is use a text column which is either an empty string or has a particular string value, and then my toggle will set a var either to "" or that string value. Thus it will filter by either any value or the one particular value, and that eliminates the need to write multiple versions of the Filter().
I tend to focus on what I can do with the tools I have rather than wish for new tools that may not exist, or cost more and are not really necessary most of the time. SharePoint as a data source for Power Apps is the "base model" in Office365 (albeit in most cases a very competent and reliable one). You can get more Delegation capability if you want to pay for it with Dataverse/Azure SQL etc)
Suggestion improvements are welcome on the Ideas Forum, where someone from Microsoft will look at them and a number of your previous posts (framed with a constructive suggested solution) would be very welcome there.
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!
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
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.
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