Multiple Tag Selections for Seamless Filtering in AppSheet interactive Dashboard

Hi,

I've been working on implementing interactive tag filters in my dashboard. I've successfully set up filtered slices for most items, but I'm encountering an issue with tag filtering.

The expression I've been using is:

INTERSECT(SPLIT(INDEX(Current_User_Filter[Tags], 1), " , "), [Tags]) = SPLIT(INDEX(Current_User_Filter[Tags], 1), " , ")

During testing in AppSheet, this expression works well. However, in the live app, it doesn't seem to function as intended.

Specifically, I'm aiming for the ability to select multiple tags for filtering. For instance, if I select "music" and "instrumental," I'd like to see all tasks that have both of these tags applied. Essentially, I want the filtering behavior to mimic the native desktop preview version, where selecting multiple tags filters tasks that have all of the selected tags set.

I'm looking for guidance on how to achieve this multiple selection functionality and ensure that the filtering behaves seamlessly within the app environment. Any insights or suggestions would be greatly appreciated.

Thanks a lot for your assistance!



Solved Solved
0 2 224
  • UX
2 ACCEPTED SOLUTIONS

Without having full comprehension of your table schema, I am just gonna try to take a stab and I apologize if this is a little off.

Generally, you are going to want to use a COUNT() function when using the INTERSECT() function.

I think you may need something like this:

COUNT(INTERSECT(SPLIT(TEXT(Current_User_Filter[Tags]), " , "), [Tags]) >0) in your slice filter.

View solution in original post

Hey Landan,

Your insight made my day! The addition of the TEXT argument was the missing link, though I'm still puzzled about why you need it (if you could shed some light on that, I'd greatly appreciate it).

The expression I ended up using ensures a match for all selected tags in the filter, ruling out any values containing just one of the chosen tags:

COUNT(INTERSECT(SPLIT(TEXT(Current_User_Filter[Tags]), " , "), [Tags])) = COUNT(SPLIT(TEXT(Current_User_Filter[Tags]), " , "))

Interestingly, with the TEXT argument, my formula worked as well:

INTERSECT(SPLIT(TEXT(Current_User_Filter[Tags]), " , "),[Tags]) = SPLIT(TEXT(Current_User_Filter[Tags]), " , ")

And for the benefit of others reading this post, here's the VALID IF formula I've used to fetch all tags utilized in the task table:

SPLIT(SORT(UNIQUE(SPLIT(Task[Tags]," , "))),",")

Thanks a ton for your help!
Have a great day!
Tom

View solution in original post

2 REPLIES 2

Without having full comprehension of your table schema, I am just gonna try to take a stab and I apologize if this is a little off.

Generally, you are going to want to use a COUNT() function when using the INTERSECT() function.

I think you may need something like this:

COUNT(INTERSECT(SPLIT(TEXT(Current_User_Filter[Tags]), " , "), [Tags]) >0) in your slice filter.

Hey Landan,

Your insight made my day! The addition of the TEXT argument was the missing link, though I'm still puzzled about why you need it (if you could shed some light on that, I'd greatly appreciate it).

The expression I ended up using ensures a match for all selected tags in the filter, ruling out any values containing just one of the chosen tags:

COUNT(INTERSECT(SPLIT(TEXT(Current_User_Filter[Tags]), " , "), [Tags])) = COUNT(SPLIT(TEXT(Current_User_Filter[Tags]), " , "))

Interestingly, with the TEXT argument, my formula worked as well:

INTERSECT(SPLIT(TEXT(Current_User_Filter[Tags]), " , "),[Tags]) = SPLIT(TEXT(Current_User_Filter[Tags]), " , ")

And for the benefit of others reading this post, here's the VALID IF formula I've used to fetch all tags utilized in the task table:

SPLIT(SORT(UNIQUE(SPLIT(Task[Tags]," , "))),",")

Thanks a ton for your help!
Have a great day!
Tom

Top Labels in this Space