Week 11 - Dashboarding

Introduction to Dashboarding

Metabase Setup

Dashboards in Metabase

Streamlit Fundamentals

Building a Metrics Dashboard

Presenting Metrics

Practice

Gotchas & Pitfalls

Assignment: Build Two Dashboards

Slides (PDF)

Career relevance: Week 11

Glossary: Week 11

Going Further

History of Dashboarding

Introduction to Dashboarding

In Weeks 6 through 10, you built a data pipeline: raw data flows in and gets transformed by dbt into clean, query-ready mart tables. The pipeline produces trustworthy numbers. The question now is: how do you see what they say?

That is what dashboards are for. They are the last mile of the pipeline: turning stored numbers into answers that humans can act on.

By the end of this chapter, you should be able to:

Two ways to build a dashboard

Both dashboards this week read the exact same data: your fct_trips mart. What differs is how you build them and who they are for:

No-code BI Code-first app
Tool this week Metabase Streamlit
How you build Point-and-click Questions Python you write yourself
Best for Stakeholders who want self-serve charts Custom logic, or a technical audience
Data source The dbt marts The same dbt marts
Example Average fare per borough KPI tiles + a data-freshness panel

<aside> 💡 Key insight: The data is the same; the tool is the choice. Your fct_trips mart powers a Metabase chart showing revenue trends and a Streamlit app showing the same numbers plus a "can I trust this?" freshness panel. You pick the tool by audience and how much custom logic you need, not by the data.

</aside>

Why two tools?

Using two tools in one week might feel like extra work, but the combination maps to how NL data teams actually divide responsibility:

You will encounter both patterns in the job market. This week lets you practice both on one coherent project.

flowchart LR
    subgraph upstream["Your pipeline (Weeks 6-10)"]
        direction LR
        raw[("Raw data")] --> dbt["dbt models<br/>(Week 10)"]
        dbt --> marts[("Mart tables<br/>fct_trips, fct_daily…")]
    end

    subgraph dashboards["Week 11: Dashboards"]
        direction TB
        meta["Metabase<br/>No-code BI<br/>stakeholder-facing"]
        stream["Streamlit<br/>Code-first app<br/>metrics + freshness"]
    end

    marts --> meta
    marts --> stream

    classDef tool fill:#e8f4fd,stroke:#4a90d9,stroke-width:2px,color:#333;
    class meta,stream tool;

<aside> ⌨️ Hands on: Look at the diagram above. For each tool, write down one dashboard you would build with it and one reason you picked that tool over the other. Compare your answers with the table at the top of this section.

</aside>

Why Metabase, not Power BI?

In the NL job market, Microsoft Power BI is the most common BI tool. It comes bundled with the Microsoft 365 ecosystem that most companies already pay for, so it is effectively "free" to adopt. If you head into an analytics-heavy role, you will very likely need to learn it on the job.

This course teaches Metabase instead, on purpose. The goal of Week 11 is the concept: what a no-code BI tool is, and how it differs from a code-first app. Power BI wraps that concept in a lot of extra machinery: a semantic layer (a modelling step that sits between the raw data and the report), plus its own languages, M / Power Query for shaping data and DAX for calculations. That is a heavy first BI tool. Metabase strips the idea back to its essence: connect to a database, write a Question, arrange Questions into a Dashboard. The mental model you build here (Questions, Dashboards, filters, metric definitions) transfers directly to Power BI, Tableau, or Looker: the concept is the same, only the interface and formula languages differ.

<aside> 💡 Power BI is the tool most NL analyst postings ask for by name. See Career relevance for how to signal transferable BI skills on your CV.

</aside>

What you will build

Metabase dashboard: Three or more Questions built on fct_trips and fct_daily_borough_stats (from your Week 10 dbt project), arranged into a single dashboard with a date-range filter. Audience: a product manager who wants to understand NYC taxi demand trends.

Streamlit metrics app: A Python app that reads fct_trips to show headline KPIs, a daily trip-volume chart, and a data-freshness panel (row count and the latest pickup) so you can trust the numbers. Audience: you and your future team, plus anyone who wants a metrics view built in code.

<aside> 🤓 Curious Geek: The history of business intelligence

BI tools predate the web. In the 1980s, mainframe-era tools like IBM Cognos let analysts query databases through GUI interfaces. Tableau brought drag-and-drop to desktop analytics in 2003. Metabase (2015) made open-source self-serve BI mainstream. The parallel rise of Python data apps (Streamlit launched in 2019) reflects a different need: engineers who want code-level control, not point-and-click.

</aside>

What makes a metric trustworthy?

A number without a definition is an opinion. Two people looking at the same data can compute "revenue" differently (gross vs net, before vs after cancellations) and produce different totals. Dashboards without metric definitions erode trust over time.

A trustworthy metric has five documented fields:

Field Example
Name avg_fare_per_trip
Description Average fare charged per completed taxi trip
Calculation AVG(fare_amount) where trip_distance > 0
Data source fct_trips: built by your Week 10 dbt project
Refresh frequency Rebuilt once per day (later, an orchestrator schedules this rebuild automatically)

Presenting Metrics covers metric definitions in depth. Keep the five fields in mind as you build your dashboards in Metabase Setup through Building a Metrics Dashboard: you will fill them in for every panel before you present.

If you are unsure how a concept fits together, an LLM can help clarify.

<aside> 💡 Using AI to help: You can paste a Metabase SQL query or Streamlit code snippet into an LLM to help debug it. ⚠️ Never include real database passwords or personal data.

</aside>

Ready for the next chapter when

The next chapter, Metabase Setup, moves from concepts to connecting a live BI tool to your database. No state to build yet: just confirm the mental model is in place:

Extra reading

Knowledge Check

<aside> 🚀 Try it in the widget: Interactive Quiz: Introduction to Dashboarding

</aside>

https://lasse.be/simple-hyf-teach-widget/mcq.html?bank=week_11_ch1_intro_dashboarding_quiz&embed=1

If the distinction between the two dashboarding approaches felt unclear, this practical demo walks through how to design dashboards that answer stakeholders' questions and tell a clear story.

<aside> 🎬 Struggling with this concept? Watch this beginner-friendly video:

Telling a Story with Data | Dashboard Build Demo

</aside>

https://www.youtube.com/watch?v=OYbPOhK0wPo


Next up: Metabase Setup, where you log in to the HYF-managed Metabase instance and connect it to the shared Azure Postgres.


The HackYourFuture curriculum is licensed under CC BY-NC-SA 4.0 *https://hackyourfuture.net/*

CC BY-NC-SA 4.0 Icons

Built with ❤️ by the HackYourFuture community · Thank you, contributors

Found a mistake or have a suggestion? Let us know in the feedback form.