Build an aggregations page

In this optional challenge you will build a self-contained metrics page on your dashboard. The page should tell a complete story using at least three chart types, so a viewer can read the numbers and the context.

Step 1: Add a new dashboard page

Open your dashboard in Dashboards and click New page. Name it something that signals the audience or purpose — for example, "Content metrics", "Director stats", or "Genre overview".

Step 2: Add cards to the page

Add at least three cards to the page, each with a different chart type.

Use the example queries below or write your own.

Single value

Add a card that returns one number. Single Value cards work best as the first thing a viewer sees: the number frames everything else on the page.

Example cypher queries for single value cards:

cypher
Total movies in the dataset
MATCH (m:Movie)
RETURN count(m) AS total_movies;
cypher
Total ratings
MATCH ()-[r:RATED]->()
RETURN count(r) AS total_ratings;

Bar chart

Add a card that compares a metric across categories. Bar charts are the clearest choice when you have 3–15 categories and a single numeric value to compare.

cypher
Average IMDb rating per genre (top 15)
MATCH (m:Movie)-[:IN_GENRE]->(g:Genre)
WHERE m.imdbRating IS NOT NULL
RETURN g.name                        AS genre,
       round(avg(m.imdbRating), 2)   AS avg_imdb,
       count(m)                      AS movie_count
ORDER BY avg_imdb DESC
LIMIT 15;

Overlapping labels?

If the genre labels overlap on the axis, switch to a horizontal bar layout in the card settings.

Line chart

Add a card that shows a trend over an ordered dimension. Line charts suit time-series or year-by-year data.

Example queries for line charts:

cypher
Movies released per year
MATCH (m:Movie)
WHERE m.year IS NOT NULL
RETURN m.year AS year, count(m) AS releases
ORDER BY year;
cypher
Average IMDb rating by decade
MATCH (m:Movie)
WHERE m.year IS NOT NULL AND m.imdbRating IS NOT NULL
WITH (m.year / 10) * 10 AS decade, m.imdbRating AS rating
RETURN decade,
       round(avg(rating), 2) AS avg_imdb,
       count(*) AS total
ORDER BY decade;

Text card

Add a Text card that explains what this page is for. A viewer who lands on this page without context needs to know what question it answers and what the numbers mean.

Write two or three sentences in plain language. For example:

markdown
## Content performance overview

This page summarises movie volume, release trends, and audience ratings across genres.

**Data source:** GraphAcademy Movies recommendations dataset — approximately 9,000 movies and 100,000 ratings.

Step 3: Arrange the layout

Drag the cards using the six-dot handle on each card so the layout reads top-to-bottom in order of importance:

  1. Single Value (the headline number)

  2. Bar Chart (category comparison)

  3. Line Chart (trend over time)

  4. Text card (context, either first or last depending on how much explanation you want)

Read the page as a viewer would: does it tell a coherent story without any other instructions?

Summary

You built a metrics page with multiple and arranged the layout so it reads as a complete story.

The optional next lesson adds geographic cards using the Map visualization.

Chatbot

How can I help you today?

Data Model

Your data model will appear here.