# Filtering tables

**URL:** <https://community.glideapps.com/t/filtering-tables/42411>\
**Category:** Ask for Help\
**Created:** [May 26, 2022, 6:10pm UTC](https://community.glideapps.com/t/filtering-tables/42411 "2022-05-26T18:10:19Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![MattLB](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mattlb/32/41284_2.png) [@MattLB](https://community.glideapps.com/u/MattLB)\
**Post date:** [May 26, 2022, 6:10pm UTC](https://community.glideapps.com/t/filtering-tables/42411/1 "2022-05-26T18:10:19Z")

</div>

@JackVaughan @david

I have been working in the Glide builder for two months developing an App based on my experiences in high tech sales.

Working within the confines of Glide has been rewarding and challenging - but one capability that is a roadblock is reporting.

Many people want actionable data which means roll-ups and analytics. The current roll-up is a good start but the inability to filter data in a relation is very problematic. I need to be able to slice and dice data to compare against different reporting periods and different parts of the organization. Like Q1 or Q2. Or for the channel or the direct sales team. Or customer types. Etc…Etc…

I am now creating dozens of extraneous ‘templated’ fields to act as pseudo filters for inline lists.

After using the system every day for the past two months, rolling up filtered data is proving to be a big challenge.

As you look at new features for Glide - adding a “filter column” field (similar to the roll-up column) would be a VERY welcomed addition and seems the most straightforward implementation that would address 90% of what I need, speaking as an every-person, to use as the basis for sums, averages and count roll-ups by different organization units, teams and customers.

If their is a Glide recommended technique to filter tables by multiple columns and then apply roll-ups - I can not find it. So any pointers welcome.

PS. Still not sure who your target market is but the product itself is a fantastic achievement.

---

<div class="post-metadata">

**Author:** ![MattLB](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mattlb/32/41284_2.png) [@MattLB](https://community.glideapps.com/u/MattLB)\
**Post date:** [May 26, 2022, 6:28pm UTC](https://community.glideapps.com/t/filtering-tables/42411/2 "2022-05-26T18:28:03Z")

</div>

@Jeff_Hager @Robert_Petitto and others have suggested the use of templated fields and ITE logic to create ‘filters’. I am using this technique along with row-owners and roles to ‘filter’ data in a seemingly straightforward manner for the end-user but the ‘behind the scenes’ addition of a dozen or two columns to 4 different tables highlights the complexity of implementing multiple filters.

Unless I am missing a more generalized and simple technique - which I am not discounting!

Here is one of example of the topic with good techniques/ideas:

> [@Conditional Rollup within Glide data editor](https://community.glideapps.com/t/conditional-rollup-within-glide-data-editor/9415/7):
>
> In your log sheet create an if then column and fill it with true if the log has a meter reading greater than zero. Then create a template that joins the machine ID and the if then value. In your machine sheet, create a template of machine ID and the word ‘true’. Now change your relation to use those templates to link machine to log. Your rollup should then show the max date of a log that has a meter reading.

---

<div class="post-metadata">

**Author:** ![david](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/david/32/62831_2.png) [@david](https://community.glideapps.com/u/david)\
**Post date:** [May 26, 2022, 6:43pm UTC](https://community.glideapps.com/t/filtering-tables/42411/3 "2022-05-26T18:43:00Z")

</div>

Yes, it’s one of our most requested features from intermediate users–Conditional Relations / Filtering.

We’re doing a lot of architecture work on Glide Apps this quarter, to make it easier for us to bring improved filtering to columns.

---

<div class="post-metadata">

**Author:** ![gvalero](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/gvalero/32/1037_2.png) [@gvalero](https://community.glideapps.com/u/gvalero)\
**Post date:** [May 26, 2022, 7:32pm UTC](https://community.glideapps.com/t/filtering-tables/42411/4 "2022-05-26T19:32:13Z")

</div>

> [@MattLB](#):
>
> If their is a Glide recommended technique to filter tables by multiple columns and then apply roll-ups - I can not find it. So any pointers welcome

Well, here you can see and test another technique, it’s what I use in cases like yours [Multi Filters using Relations: a new way 💡](https://community.glideapps.com/t/multi-filters-using-relations-a-new-way/36092)

Saludos

---

<div class="post-metadata">

**Author:** ![MattLB](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mattlb/32/41284_2.png) [@MattLB](https://community.glideapps.com/u/MattLB)\
**Post date:** [May 26, 2022, 7:34pm UTC](https://community.glideapps.com/t/filtering-tables/42411/5 "2022-05-26T19:34:13Z")

</div>

Too late for a wish list? Front of the filtering queue (top of the pile?) should be filtering by dates against a range. If a date falls between a range ( start/end ) would enable reporting for week/month/quarter/year actions and items.

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [May 26, 2022, 8:05pm UTC](https://community.glideapps.com/t/filtering-tables/42411/6 "2022-05-26T20:05:29Z")

</div>

Completely agree. To create filters it requires MANY additional columns in the data editor:

1. Template columns to create key values
2. ITE columns to create the conditions
3. User specific columns to house the user selection
4. more ITE columns to determine if the user selections meet the conditions
5. Relations from the IFE columns to the data
6. Rollups to summarize the relations
7. Join Lists to feed services like QuickChart

It’s complicated and causes apps to crash if the data set is too large.

Love that @david and team is prioritizing a solution.

---

<div class="post-metadata">

**Author:** ![MattLB](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mattlb/32/41284_2.png) [@MattLB](https://community.glideapps.com/u/MattLB)\
**Post date:** [May 26, 2022, 8:42pm UTC](https://community.glideapps.com/t/filtering-tables/42411/7 "2022-05-26T20:42:22Z")

</div>

Watched the video - looks great.

Now time to look at your App - thanks for getting back to me. Glide can be fantastic and fantastically frustrating. More of the former though.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [May 27, 2022, 3:56am UTC](https://community.glideapps.com/t/filtering-tables/42411/8 "2022-05-27T03:56:04Z")

</div>

> [@MattLB](#):
>
> Many people want actionable data which means roll-ups and analytics. The current roll-up is a good start but the inability to filter data in a relation is very problematic. I need to be able to slice and dice data to compare against different reporting periods and different parts of the organization. Like Q1 or Q2. Or for the channel or the direct sales team. Or customer types. Etc…Etc…

I do a lot of this sort of stuff, and yeah and it can get pretty complicated and cumbersome pretty quickly. I think the best advice I can give is to make liberal use of helper tables. This helps to compartmentalise your complex logic and keep your data tables cleaner. Often these tables will contain just a single row, although it depends on the specific use case. But the general idea is that a single purpose built table is used to consolidate and summarise data from one or several data tables.

Example: let’s say you need to produce a summary table with month on month totals. The first thing I will do is create a new Glide table and add 12 rows - one for each month of the year. And then I build all (most) of my logic in this table - relations, roll ups, etc. This approach doesn’t necessarily reduce any complexity, but it does make things more manageable.

Here’s a short video to demonstrate what I’m getting at:

---

<div class="post-metadata">

**Author:** ![MattLB](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mattlb/32/41284_2.png) [@MattLB](https://community.glideapps.com/u/MattLB)\
**Post date:** [May 27, 2022, 12:59pm UTC](https://community.glideapps.com/t/filtering-tables/42411/9 "2022-05-27T12:59:05Z")

</div>

Great, great example. You, @Robert_Petitto, @gvalero, @Jeff_Hager and @ThinhDinh (plus others) have been invaluable with tips, ideas and practical Glide examples (how to think in Glide!).

Documentation is light but user experience is rich.

How did you create the inline table comparing year over year? I am assuming this css/rich text and NOT built into Glide.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [May 27, 2022, 1:16pm UTC](https://community.glideapps.com/t/filtering-tables/42411/10 "2022-05-27T13:16:54Z")

</div>

> [@MattLB](#):
>
> How did you create the inline table comparing year over year? I am assuming this css/rich text and NOT built into Glide.

---

<div class="post-metadata">

**Author:** ![MattLB](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mattlb/32/41284_2.png) [@MattLB](https://community.glideapps.com/u/MattLB)\
**Post date:** [May 27, 2022, 1:26pm UTC](https://community.glideapps.com/t/filtering-tables/42411/11 "2022-05-27T13:26:03Z")

</div>

After watching this video a third time I realize this is exactly what I am trying to achieve.

I would have 3-4 different monthly summaries (mostly count) and an “overall” roll-up of all the details

Everything I am rolling up is by ‘grouped’ by date with a ‘location’ as a filter (Southwest, Northwest, Rockies, Great Lakes, etc).

How do you decide what goes in a helper table? Do you use local inline filers to do ‘second-level’ filters (like ‘location’). Do you hand craft tables with pre-built rows containing user IDs or locations to simplify reporting?

This is really good work!

![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/1/2/12290bb45776d3c3de69e5e7749a07767f0e0218.png)

---

<div class="post-metadata">

**Author:** ![MattLB](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mattlb/32/41284_2.png) [@MattLB](https://community.glideapps.com/u/MattLB)\
**Post date:** [May 27, 2022, 1:27pm UTC](https://community.glideapps.com/t/filtering-tables/42411/12 "2022-05-27T13:27:40Z")

</div>

Watching NOW - thank you very much.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [May 27, 2022, 2:02pm UTC](https://community.glideapps.com/t/filtering-tables/42411/13 "2022-05-27T14:02:06Z")

</div>

> [@MattLB](#):
>
> How do you decide what goes in a helper table? Do you use local inline filers to do ‘second-level’ filters (like ‘location’). Do you hand craft tables with pre-built rows containing user IDs or locations to simplify reporting?

Actually, I just remembered that I did a tutorial on this a while back, that goes through the entire process step by step. This includes applying dynamic filters to the table, as well as (static) sorting.

> [@How To: CSS Table with dynamic filtering and sorting](https://community.glideapps.com/t/how-to-css-table-with-dynamic-filtering-and-sorting/35784):
>
> I’ve been asked a few questions about this one, so here is a tutorial that walks through the process step by step. The app I’m working on in the tutorial is copyable, so feel free to make your own copy (see link below). enjoy slight_smile Links: [divtable.com table styler](https://divtable.com/table-styler/) Experimental code to sort joined list by secondary joined list – [Link to use in External Code column](https://mcdarren.github.io/glide-jl-sort-by-keys-advanced/) – [Clone link](https://github.com/mcdarren/glide-jl-sort-by-keys-advanced)[Copyable Demo App](https://html-tables-concept.glideapp.io/) Note that the experimental code column is removed from…
