Grouping by field data

Great! It’s not a trivial feature by any means. will have impact on many things, like export, formulas, row linking. I wouldn’t be surprised if this takes months to get right.

1 Like

Yeah, it’s a big one. @nigel is working on it and we don’t know yet when it’ll be finished. :slightly_smiling_face:

1 Like

OK i’ll stop bothering nigel with my endless questions :laughing:

Hi, Baserow team!
Just would like to highlight that you are on a right way with group by feature. One of your competitors, nocodb has just released thy group by feature, mentioned in their discord channel that it was one of the most awaited feature by their community) Maybe that info can give you some motivation and ideas) Column Operations | NocoDB

Thanks for the heads up @Alexander :eyes:

Hello there!
I just want to share some features connected to the “Group By” function, which I highly use in Airtable.
One feature is the “Group By” column summary, which displays a divided-by-group summary for sums, dates, quantities, etc. I’ve attached a screenshot from Airtable for reference.
Would be super usefull to see that in Baserow)

Hello @Alexander, back to you with the news. ‘Aggregations per group by’ are already part of our plans. You can track the progress: Aggregations per group by (#2164) · Issues · Baserow / baserow · GitLab.

I’m surprised grouping by related field or lookup aren’t possible. It doesn’t show up in the list.

image

Hi,

A Linked field can contain multiple items. Therefore, a lookup field can also contain multiple items and is considered a list. Therefore, it is not possible to use those field as a group by field.

A work around is to use a formula field that converts the lookup field to a single text. This formula uses the lookup() function combined with the join() function:

join(lookup('a link row field name', 'field name in other the table'),'')
1 Like

Hello! The ‘Group By’ feature is one I heavily rely on in Airtable and it’s been on of a key reason I haven’t been able to start migrating my database to Baserow.

I’m really grateful that the team has now included this feature, but it still needs fine-tuning to become a fully-functional solution. I’ve recently taken a deep dive into the ‘Group By’ feature, creating a test dataset (including orders, products, clients, and managers) to explore it thoroughly. I’d like to share my suggestions, mainly features from by Airtable, that are necessary to make the ‘Group By’ feature in Baserow fully functional and robust.

There are 10 proposals (7х🚨 - are critical, and 3х📌 - are not critical, so I personally can migrate the database, but would miss them as time-savers and UX-improvers)

  1. :rotating_light: Group sections and collapse \ expand - https://youtu.be/33KQ2OdcTes?t=95

  2. :rotating_light: Collapse and expand all groups - https://youtu.be/33KQ2OdcTes?t=330

  3. :pushpin: ctrl + f ⇒ auto expand | collapse all groups - https://youtu.be/33KQ2OdcTes?t=376

  4. :rotating_light: Placement of group titles - https://youtu.be/33KQ2OdcTes?t=457

  5. :rotating_light: Freezing the Primary Field - https://youtu.be/33KQ2OdcTes?t=524

  6. :rotating_light: Summaries for groups - https://youtu.be/33KQ2OdcTes?t=633

  7. :rotating_light: Summaries for field types - formula and relations - https://youtu.be/33KQ2OdcTes?t=807

  8. :rotating_light: Group By for Formula and Relation Fields - https://youtu.be/33KQ2OdcTes?t=846

  9. :pushpin: Changing orders in a grouping by setting - https://youtu.be/33KQ2OdcTes?t=939

  10. :pushpin: Manual sorting of groups in group by (notion like) - https://youtu.be/33KQ2OdcTes?t=970

I would like to express my thoughts clearly and in full detail, so i will send a message below the full description of each point complete with screenshots, links, and videos

1 Like

Below is a detailed description of each point:"

The link to the datasets “Orders table”:
Airtable:

:rotating_light: #1 - Group sections and collapse \ expand -

The ‘Group By’ feature is essential for quickly navigating through large datasets. This is very efficiently implemented in Airtable, where groups are separated by empty spaces. This format of data presentation allows to collapse and expand groups. By default, all groups are collapsed, allowing me to quickly get an overview of the top-level categories. I can then expand the specific group/subgroup I need to work with the relevant data.

Without the division into sections and the ability to collapse/expand groups, the convenience of using the ‘Group By’ functionality is lost. Currently, in Baserow, it resembles more a simple field filter with a frozen title. To quickly access the necessary data, instead of simply clicking to expand the required group, I have to scroll through the entire page for a long time, which is quite inconvenient.

Even in NocoDB, which in my opinion lags behind Baserow in many aspects, the ‘Group By’ feature is implemented through separate sections with the ability to collapse and expand.

Below are the links to view with group by turned on)

Link to airtable view: Airtable - Group by date and status

Link to baserow view: Group by date and status // Baserow

Link to nocoDB view: NocoDB

Attempt to answer three questions:

  1. Were there any canceled orders on January 8th?
  2. Which day had more paid orders, January 2nd or January 3rd?
  3. Were there any orders on January 6th and 7th?

As you can see, the way Airtable’s “Group By” feature functions facilitates quicker answers. This is because it allows data to be organized from a broader category to more specific ones. In Baserow, however, you still need to scroll through the entire table.

AIRTABLE

NOCODB

BASEROW

:rotating_light: #2 - Collapse and expand all groups | sub-groups

Airtable gives options to:

  • Extend \ Collapse all the groups and sub-groups on the page
  • Extend \ Collapse a single group or sub-group
  • Extend \ Collapse all sub-groups of a chosen element

The button to open this pop-up is located on every single group and sub-group.

The ability to easily manage groups this way makes work with grouping by very convenient and saves a lot of time manually opening and closing groups.

**:pushpin: #3 - ctrl + f ⇒ auto expand | collapse all groups **

In airtable CTRL+F (cmd+F) triggers a special custom pop-up. By entering a value into this pop-up, it immediately leads to the expansion of all groups, and showcasing arrows to jump between the located values. It is exceptionally effective for quickly finding a specific group, category, row, or cell. Once the pop-up is closed, all groups return to their collapsed state.

In the scenario shown in the screenshot, this enables the quick identification of orders from a particular client, eliminating the need to add an extra ‘Group By’ level.

The process would be even more convenient if the auto-expansion of all groups happened as soon as the pop-up is opened, rather than when the first character is entered. This way, you could temporarily expand all groups even when you’re not looking for specific data.

:rotating_light: #4 - Placement of group titles

Due to Airtable’s group layout, it can also store group titles as headers, saving significant screen space compared to Baserow’s current method. Screen space is crucial for users, and Airtable’s approach proves to be more efficient in this regard.

:rotating_light: #5 - Freezing the Primary Field - Essential for Maintaining Focus While Scrolling Horizontally

In both Airtable and Baserow, the first column in a grid view is always frozen. However, Airtable’s advantage is that this column remains frozen even in ‘Group By’ mode, unlike in Baserow. In Baserow, when scrolling horizontally, there’s a tendency to lose track of the row|rows in focus, which can hinder efficient data navigation and analysis.

:rotating_light: #6 - Summaries for groups and sub-groups

In Airtable, each field of a group and sub-group can have its own individual summary, in addition to the overall summary at the bottom of the page. Even for every type of data (text. number. data etc) This feature is incredibly useful, as one of the primary purposes of grouping is to quickly access aggregate data. Unfortunately, Baserow, due to its group layout, lacks this capability.

It also give a huge opportunity to the creativity to make different data grouping to have a quick access to necessary conclusions and analysis. And to create different views with different group by structure to quickly access necessary summaries in different data slices and opportunity to drill down deeper if needed.

In the video I show 4 examples of views in airtable which were created just to have a quick access to an aggregated financial data of a real project.

:rotating_light: #7 - Sammaries for all field types - formula and relations

Unfortunately, Baserow currently lacks the capability to provide summaries for results derived from formulas or data obtained through relational fields, such as lookups, counts, and roll-ups. Yet, these types of fields are crucial as they enable a wide range of calculations and are frequently used in data analysis

:rotating_light: #8 - Group By in Formula and Relation Fields

Honestly, this is a second major letdown for me. The inability to use ‘Group By’ for formula fields and relational fields, like link, lookup, count, and rollup, in Baserow is a serious drawback. These fields often hold crucial data, and not being able to group them significantly limits functionality. I feel like this restriction eliminates about 80% of the data that could be effectively used with the ‘Group By’ feature.

:pushpin: #9 - Changing orders in a grouping by setting

In Airtable’s ‘group by’ settings, I can adjust the hierarchy of main and sub-groups by moving elements up or down by drag and drop. However, in Baserow, to change the order, I have to delete and recreate the elements.

:pushpin: #10 - Manual sorting of groups in group by (notion like)

An enhancement that could potentially advance Baserow’s ‘Group By’ functionality beyond Airtable’s is the option for manual sorting of group titles. This feature is particularly useful when dealing with a limited number of groups, such as statuses. It allows for custom arrangement, like placing paid orders at the top and canceled ones at the bottom, or any other order that suits the manager’s needs. This has been effectively implemented in Notion and proves to be very convenient.

1 Like

Thank you for providing such extensive feedback. We appreciate the effort you put into sharing your ideas and making them as clear as possible — thank you!

I will check everything you shared and will get back to you. :ok_hand:

1 Like

I’d like to echo the request for the ability to group by relations. I currently have a Projects table and a Tasks table, where each task is associated with a project. Ideally I would be able to group my Tasks table by Project. Since this currently isn’t supported, I find myself having to create many custom views for each project, which is time consuming and fiddly.

Hi,

There is a workaround for this that I use a lot.

I assume that you want to create a view where the tasks are grouped by project and that the tasks table has a linked field to the projects table.

  1. Create a new formula field in the tasks table
  2. Use the following formula assuming the linked field has the name Project: join(lookup('Project','Name'),'')
  3. Use this new field to group the tasks table.
1 Like

@frederikdc Thanks for the tip, this is working great!

Hey Alexander, apologies for the delay, I finally managed to go through all the recommendations you shared (thanks again for such detailed feedback). So, in general, we do plan to improve the group by feature, and many of the features you mentioned are already in the pipeline.

1-3) Group sections and collapse \ expand; Collapse and expand all groups | sub-groups; Shortcut to auto expand | collapse all groups:

Definitely! The ability to collapse rows in a group by is already in the pipeline. You can see it here: Collapsing of rows in a group by (#2163) · Issues · Baserow / baserow · GitLab. I’ve also added your recommendations on how to make this feature more flexible in the comments.

4) Placement of group titles:

I’ve shared this feedback with our Product Designer.

5) Freezing the Primary field:

We have this issue to add a feature to be able to pin/freeze columns in a table: Pin/freeze columns in a table (#1953) · Issues · Baserow / baserow · GitLab. I will also check with the team to see if this feature will be compatible with the group by.

6) Summaries for groups and sub-groups:

This one is also already in the pipeline: Aggregations per group by (#2164) · Issues · Baserow / baserow · GitLab.

7-8) Summaries for all field types; Group By in Formula and Relation fields:

In 2024, our plan is to focus much more on improving existing features. A key area here will be ensuring all features work with every field type. This also applies to the ‘group by’ feature.

9-10) Changing orders in a grouping by setting; Manual sorting of groups in group by (notion like):

Noted! I’ll discuss this one with the team.

Once I have feedback on the points 9 and 10, I’ll get back to you on this. :raised_hands:

1 Like

Hi! Thank you for your feedback. It’s great to hear that you’ve taken all the points into account. I’m eagerly awaiting the opportunity to move some of my complex projects from Airtable to Baserow.

Additionally, if you need any assistance in testing, discussing, or demonstrating user cases related to the ‘group by’ feature, I am more than willing to help in any way I can.

Thanks, we appreciate your support @Alexander :pray:

Hey @Alexander, thank you once again for the comprehensive feedback on group by!

We’ve discussed your ideas that are not yet in our pipeline, and here are the updates:

#4: Placement of group titles
We plan to introduce an option that allows our users to select how they prefer groups to be stacked - vertically or horizontally. Refer to this issue for more details: Horizontal stack group by mode (#2436) · Issues · Baserow / baserow · GitLab

#5: Freezing the Primary field:
As I mentioned before, we plan to add the ability to freeze columns in general, and we have also added a point to this issue to make it work with the group by function as well: Pin/freeze columns in a table (#1953) · Issues · Baserow / baserow · GitLab

#8: Group By to work with Formula and Relation fields:

#9: Changing orders in a grouping by setting
Yes! For both groups and filters, we plan to make it possible to change orders using drag and drop: Change order of group by (#2434) · Issues · Baserow / baserow · GitLab

#10: Manual sorting (notion like)
We love this idea, and and will make it possible to manually sort the order of groups in ‘group by’: Manual sorting of groups order in group by (notion like) (#2435) · Issues · Baserow / baserow · GitLab

All your requests have been accepted. Thank you for helping us improve Baserow. :raised_hands:

1 Like

Hi! Good to hear that!
If you need any feedback for the planned UI/UX, I am ready to help