Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 3

Efficient Data Aggregation with Multi-Level Hierarchies

Recommended resources

Hello! Welcome back to your course on mastering Notion for businesses.

In our last lesson, we focused on the architectural principle of normalization. We learned how to deconstruct a business process into distinct, related databases to ensure data integrity and eliminate redundancy. The key was to separate information into logical, single-purpose tables like Companies, Projects, and Tasks.

Today, we'll address the other side of that coin. Now that we've neatly separated our data, how do we bring it back together to create powerful reports, dashboards, and automated summaries? This is where the real payoff of a good architecture becomes visible.

Our learning outcome for this lesson is to design multi-level relational hierarchies and rollup chains to aggregate data efficiently across a normalized structure. We will explore how to connect databases more than one level deep and use Notion's Rollup property to pull valuable insights through these connections.

From Two Levels to a Hierarchy

In the previous lesson, we established simple parent-child relationships, like a Project (parent) having multiple Tasks (children). In real business systems, these chains often extend further. A Project itself might belong to a larger business Area or Department. This creates a three-level, "grandparent-parent-child" hierarchy.

Project Management Hierarchy Diagram
This image illustrates a common multi-level hierarchy: a high-level Project is broken down into major Activities, which are then broken down into individual Tasks.

Structuring your data this way is fundamental to building scalable systems. It allows you to organize work from the highest strategic level down to the most granular action item. A very common and effective pattern for this in Notion is the Areas → Projects → Tasks (APT) framework.

The APT Framework

The Areas-Projects-Tasks (APT) framework is a powerful and popular way to structure an entire business workspace in Notion. Let's look at how the consulting firm XyloDigital describes this architecture.

Please read the section titled 'The APT Framework,' focusing on the descriptions of Areas, Projects, and Tasks. Pay close attention to the 'The Notion Magic' subsection, which explains how Database Relations and Rollup Formulas connect these three levels.

As you can see, the structure is simple but powerful:

  • Areas: Ongoing responsibilities (e.g., Marketing, Operations). They don't have an end date.
  • Projects: Specific outcomes with clear deadlines (e.g., Launch New Website). They belong to an Area.
  • Tasks: The individual actions required to complete a Project. They belong to a Project.

This normalized hierarchy is the skeleton of our system. Now, let's add the connective tissue that makes it intelligent: the Rollup.


Aggregating Data with Rollups and Rollup Chains

A Rollup is a Notion property that "pulls in" or aggregates data from a related database. You've created the Relation property; the Rollup is what lets you leverage that connection to do work.

For example, a Project can "roll up" its related Tasks to automatically calculate its completion percentage. Let's watch a few examples to see this in action.

Notion at Work: Empower Databases with the Rollup Property

This official video from Notion provides excellent, clear examples of how Rollups work. We'll focus on three specific applications that are core to system design.

Please watch the following three segments: 5:41 - 8:01: See how a rollup can 'inherit' a property from a parent item. This is a foundational use case for ensuring data consistency. 12:43 - 14:38: This is a key segment. Pay close attention to how they pull 'grandparent' data (the Year) down to the 'child' item (the Expense) via the 'parent' (the Month). This is a direct demonstration of a multi-level rollup chain. 14:38 - 16:32: Watch how rollups can calculate project progress from completed tasks, a very common and powerful business application.

The most important concept from that video for our current goal is the "grandparent" rollup (Year → Month → Expense). This is the technique that allows you to surface high-level information at the lowest level of detail.

Let's look at another professional framework, William Nutt's "Bulletproof" system, to see this same grandparent rollup pattern. Here, the hierarchy is Buckets → Projects → Tasks.

The Bulletproof Task Management System

The 'Bulletproof' framework provides another excellent example of a multi-level hierarchy.

Scroll down to the 'Task Database Properties' section and read the descriptions for 'Project (Relation)' and 'Bucket (Rollup)'. Notice how the 'Bucket' property in the Tasks database is a Rollup that pulls in the bucket from the task's related Project. This is a perfect, concise example of the 'grandparent rollup' technique.

This simple but elegant solution—using a rollup in the Tasks database to look at the related Project and pull in that project's Bucket—is a cornerstone of efficient system design in Notion.

Test your understanding!

You have a three-level hierarchy: Clients → Projects → Invoices.

  • The Invoices database has a relation to the Projects database.
  • The Projects database has a relation to the Clients database.

You want every Invoice to automatically display the name of the Client it ultimately belongs to. How would you configure a property in the Invoices database to achieve this?

Show answer
  1. In the Invoices database, create a new property of type Rollup.
  2. In the configuration panel for the rollup, you'll set the following:
    • Relation: Select the Projects relation.
    • Property: From the list of properties in the Projects database, select the Clients relation property.
    • Calculate: Choose "Show original".

This tells Notion: "For this invoice, look at the related project, then look at that project's related client, and show me the name of that client."


Advanced Architecture: The "Rollup of a Rollup" Workaround

There is a critical limitation in Notion you must be aware of as a systems architect: you cannot directly create a rollup of another rollup property.

For instance, imagine your Projects database has a rollup that calculates the Total Hours logged in its related tasks. Now, in your Areas database, you want to roll up those Total Hours from all its related projects to see a grand total for the entire department. You cannot. Notion will not let you select the Total Hours rollup property in the Areas database configuration.

This is a frequent point of frustration, but there is a standard and essential workaround.

Notion at Work: Empower Databases with the Rollup Property

Understanding how to overcome Notion's limitations is as important as knowing its features. This final video segment demonstrates the essential workaround for the 'rollup of a rollup' problem.

Watch from 23:10 to 26:16. The presenter is asked this exact question and demonstrates how to use an intermediate 'Formula' property to make a 'grandparent' level aggregation possible. This is a crucial architectural pattern for designing complex reporting dashboards.

To summarize the workaround pattern:

  1. Level 1 (e.g., Projects): You have your initial Rollup property (e.g., Hours Rollup).
  2. Level 1 (e.g., Projects): Create a new Formula property (e.g., Hours Formula). The only thing this formula does is reference the Hours Rollup property. It will simply mirror the rollup's value.
  3. Level 2 (e.g., Areas): Create a new Rollup property. When configuring it, you can now select the Hours Formula property from the Projects database to aggregate.

This intermediate formula acts as a bridge, converting the rollup's output into a simple number that Notion can then use in a subsequent rollup. Mastering this pattern is a mark of an advanced Notion architect.



Conclusion

You've now connected the dots from our previous lesson. A normalized structure isn't just about data purity; it's the required foundation for building powerful, automated aggregations. By separating data correctly, you enable yourself to pull it back together in limitless combinations using relational hierarchies and rollup chains.

Key Takeaways:

  • Scalable systems are often built on multi-level hierarchies like Areas → Projects → Tasks.
  • Rollups are the engine for aggregation, pulling data from related databases to perform calculations or display information.
  • You can create rollup chains to pull "grandparent" data down to "child" items, providing high-level context where it's needed most.
  • The "rollup of a rollup" limitation is a key architectural constraint. The standard workaround is to use an intermediate formula property to pass the value along the chain.

In our next lesson, we will continue building on this foundation. With a well-structured and efficiently aggregated database, the next challenge is performance at scale. We will tackle the learning outcome: Apply database optimization strategies using filters and views to improve query performance in large datasets.