cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
RussellGove
Kudo Kingpin
Kudo Kingpin

Filtering on multiple fields

Hi ,

I have a gallery and i'm trying to give users several ways to filter it. I have controls above the gallery to let the user select a Year, region, customer or keyword to filter on. I want to use only the filters the user has selected. 

 

My script ends up looking like this (this represents just the conditions, not the actual filters):

conditions.PNG

 

After adding the actual filtering logic for each condition (and god forbid an other condition) this ends up being hundreds of lines of script that are largely incomprehensible, even to the author!

 

Is there a better way to do this?

 

What we really need is a real code editor! If i could edit this script in an intelligent VSCode editor I'd have this done in minutes. The way it is it's taking days!

 

Please give me back my curly braces!

24 REPLIES 24

@RussellGove
Glad to hear it’s working now. Please mark the post that solved your issue as the solution so others can find it in the future.

I havent actually got it working yet. When i use the if statement, I get blue squigglys:

new.PNG

 

But without the if, it looks oK:

old.PNG

So it seems the if function itself is not delegatable on a sharepoint backend. Any Ideas?

IsBlank cannot be delegated. See link below for  more detail.

 

https://powerapps.microsoft.com/en-us/blog/sharepoint-delegation-improvements/

 

 

 

yeah, the IF statement itself is not delegatable either : https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/delegation-overview

 

 I am not sure if your filter requirement will work this way: Item=If(condition, Filter(Splist,abc),Filter(splist,xyz))

@RussellGove @IvanZ 

Darn it.  I guess my delegation settings weren't set low enough to catch this.  Sorry guys.  I was definitely wrong on the delegation part

@RussellGove @IvanZ 

Could you please humour me and let me know if you are getting delegation warnings on this style of pattern?  I turned my delegation rows down to 1 using a list of 3,000 records and no error is appearing.  I know it says IsBlank is non-delegable for Text in Sharepoint but I am just not seeing the error.  I would appreciate it if you can help me do a test 🙂

 

Filter(
    FPARequests,
    IsBlank(tbYear.Text)=true Or Year = tbYear.Text,
    IsEmpty(cbxRegion.Selected)=true Or Region = cbxRegion.Selected,
    IsBlank(tbCustomer.Text)=true Or Customer tbCustomer.Text,
    IsBlank(tbKeyword.Text)=true Or Keyword = tbKeyword.Text
)

 

I have a similar filter, and IsBlank does trigger delegation warning. You can test for delegation with this formula:

Filter(
    FPARequests,
    IsBlank(tbYear.Text)
)

 

 

@IvanZ 

Here's what I am seeing with the following settings:

 

datasource: SP List

list size: 3000 records

data row limit for non-delegable queries: 1

 

Untitled.png

 

Likewise, no delegation warning on the previous code block I sent for whatever reason.  What's up with that?

I tested on your formula, it is indeed able to delegate. The reason why it works because IsBlank(Input.Text) return a value which doesn't query Sharepoint. If you do IsBlank(SPColumn.value) then it will get the warning. 

 

Hope this answer your question. 

 

Helpful resources

Announcements
Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

365 EduCon 768x460.png

Microsoft 365 EduCon

Join us for two optional days of workshops and a 3-day conference, you can choose from over 130 sessions in multiple tracks and 25 workshops.

Users online (2,933)