Tableau Lesson 60 – Tableau Capstone Project | Dataplexa
Lesson 60 · Final Projects Capstone

Tableau Capstone Project

This is the final lesson of the course — and it is not a lesson. It is a brief. Across 59 lessons you have learned data connections, calculated fields, LOD expressions, table calculations, parameters, maps, dashboards, actions, and storytelling. Now you build something that uses all of it. The capstone is a complete, end-to-end Tableau project for a global NGO called ClearPath International — from raw data preparation to a published, publicly shareable multi-dashboard story on Tableau Public.

The Brief

Organisation: ClearPath International — an NGO operating clean water and sanitation programmes across 5 regions: Sub-Saharan Africa, South Asia, Southeast Asia, Latin America, and Middle East & North Africa.

Dataset: 4 years of programme data — project sites, funding received, population served, water access rates before and after intervention, and field survey scores by district.

Deliverable: A Tableau Story published to Tableau Public with three dashboard scenes — a Global Programme Overview, a Regional Deep Dive with geospatial analysis, and an Impact Scorecard showing outcomes vs targets.

Audiences: The Board of Trustees (headline impact numbers and funding efficiency), regional programme managers (district-level drill-down), and external donors (a clean, shareable story they can embed on their own sites).

Constraint: The final workbook must be published to Tableau Public. All data has been pre-anonymised. The story must be fully interactive and load in under 4 seconds on a standard broadband connection.

The Dataset

Three CSV files feed the project. Connect all three in Tableau Desktop or Tableau Public Desktop and build relationships in the Data Source canvas before creating any sheets. Do not union or blend — use relationships.

-- FILE 1: projects.csv  (fact table — one row per project site)
-- Columns: ProjectID, ProjectName, Country, Region, District,
--          Latitude, Longitude, StartYear, EndYear, Status,
--          FundingUSD, PopulationTargeted, PopulationServed,
--          WaterAccessBefore, WaterAccessAfter, ProgrammeType

-- Sample rows:
-- ProjectID  Country     Region              District  StartYear  FundingUSD  PopServed  Before  After
-- CP-001     Kenya       Sub-Saharan Africa  Turkana   2021       420000      18400      24%     81%
-- CP-002     Bangladesh  South Asia          Sylhet    2021       380000      22100      31%     88%
-- CP-003     Indonesia   Southeast Asia      NTT       2022       295000      14700      38%     79%
-- CP-004     Peru        Latin America       Loreto    2022       510000      26300      19%     76%
-- CP-005     Morocco     MENA                Draa      2023       340000      16800      42%     84%
-- ...continues to 80 project rows across 4 years

-- FILE 2: funding.csv  (one row per funding tranche per project)
-- Columns: FundingID, ProjectID, FunderName, FunderType,
--          FundingYear, AmountUSD, GrantType
-- FunderType: Government | Foundation | Corporate | Individual
-- GrantType:  Core | Restricted | Emergency | Matching

-- FILE 3: surveys.csv  (field survey scores — 3 surveys per project)
-- Columns: SurveyID, ProjectID, SurveyYear, SurveyRound,
--          SanitationScore, WaterQualityScore,
--          CommunityEngagementScore, OverallScore

-- Relationships to build in the Data Source canvas:
-- projects.csv → funding.csv  on ProjectID  (one-to-many)
-- projects.csv → surveys.csv  on ProjectID  (one-to-many)
-- projects is the primary table — all sheets filter from it

Calculated Fields — Build These Before Any Sheet

Create all calculated fields in the Data pane before opening the first worksheet. Name them clearly — hiring managers reviewing your Tableau Public workbook will open the data source and read your calculations.

-- ── IMPACT METRICS ──────────────────────────────────────────

-- Percentage point improvement in water access
Access Improvement (pp) =
  [WaterAccessAfter] - [WaterAccessBefore]

-- Number of additional people now with water access
People Gained Access =
  INT([PopulationServed] * [Access Improvement (pp)])

-- Cost per person served (NULLIF prevents divide-by-zero)
Cost per Person Served =
  [FundingUSD] / NULLIF([PopulationServed], 0)

-- Programme efficiency band
Efficiency Band =
  IF [Cost per Person Served] <= 20 THEN "High"
  ELSEIF [Cost per Person Served] <= 35 THEN "Medium"
  ELSE "Low"
  END

-- ── TARGET COMPARISON ────────────────────────────────────────

-- Each region has a target of 80% post-intervention access rate
Target Met =
  IF [WaterAccessAfter] >= 0.80 THEN "Met"
  ELSE "Below Target"
  END

-- Distance above or below the 80% target
vs Target (pp) =
  [WaterAccessAfter] - 0.80

-- ── LOD: REGION-LEVEL AGGREGATES ─────────────────────────────

-- Total people served per region (ignores sheet-level filters)
Region Total Served =
  { FIXED [Region] : SUM([PopulationServed]) }

-- Average access improvement per region
Region Avg Improvement =
  { FIXED [Region] : AVG([Access Improvement (pp)]) }

-- Region share of all people served
Region Share =
  SUM([PopulationServed]) /
  { FIXED : SUM([PopulationServed]) }

-- ── SURVEY COMPOSITE ─────────────────────────────────────────

-- Weighted composite score: Water quality weighted highest
Survey Composite =
  ([SanitationScore]          * 0.35) +
  ([WaterQualityScore]         * 0.40) +
  ([CommunityEngagementScore]  * 0.25)

Dashboard Blueprint

Global Programme Overview — Layout Preview
80
Active Projects
5 regions
1.48M
People Served
▲ +18% YoY
$18.40
Cost per Person
High efficiency
74%
Target Met
26% below 80%
Symbol Map — Project Sites
SSA SA SEA LATAM MENA
Circle size = Population Served · Colour = Region · Click to filter
Funding by Year ($M)
2022
$5.1M
2023
$6.8M
2024
$7.9M
2025
$9.4M
Region:
All SSA SA SEA LATAM MENA
Year:
All 2022 2023 2024
Dark theme · 4 KPI cards · symbol map with filter action · funding bar chart · Region + Year slicers

Dashboard 1 — Sheet List and Action Wiring

-- Sheet 1: KPI — Active Projects
-- Marks: Text · COUNTD(ProjectID) · Label format: integer

-- Sheet 2: KPI — People Served
-- Marks: Text · SUM(PopulationServed) · Format: #,##0,,"M"

-- Sheet 3: KPI — Cost per Person Served
-- Marks: Text · AVG([Cost per Person Served]) · Format: $#,##0.00

-- Sheet 4: KPI — Target Met %
-- Marks: Text · COUNTD(ProjectID) filtered to [Target Met] = "Met"
--         divided by COUNTD(ProjectID) total · Format: 0%

-- Sheet 5: Symbol Map — Project Sites
-- Latitude on Rows, Longitude on Columns · Mark type: Circle
-- Size:   SUM(PopulationServed)
-- Colour: Region (discrete — assign palette manually)
--         SSA=#f97316  SA=#22c55e  SEA=#0ea5e9  LATAM=#a78bfa  MENA=#fbbf24
-- Tooltip: ProjectName, Country, PopulationServed,
--          WaterAccessBefore, WaterAccessAfter, [Access Improvement (pp)]

-- Sheet 6: Bar Chart — Total Funding by Year
-- Columns: StartYear (discrete) · Rows: SUM(FundingUSD)
-- Colour: single orange · Label: SUM(FundingUSD) as "$#,##0,,"M""

-- Dashboard Actions:

-- Filter action: clicking a circle on the Symbol Map
--   Source: Sheet 5 · Target: all sheets on this dashboard
--   Fields: Region, Country
--   Clearing the selection: Show all values

-- Highlight action: hovering the bar chart year
--   Source: Sheet 6 · Target: Sheet 5
--   Fields: StartYear

Dashboard 2 — Regional Deep Dive

The Regional Deep Dive uses a parameter to let the viewer select any of the five regions and see a full breakdown of projects, access improvement distribution, survey scores by district, and funder mix. This dashboard is designed for programme managers — they need district-level detail, not just global averages.

-- PARAMETER — Selected Region
-- Name: Selected Region · Data type: String
-- Allowable values: List
-- Values: Sub-Saharan Africa | South Asia | Southeast Asia |
--         Latin America | Middle East & North Africa
-- Display: dropdown

-- PARAMETER FILTER calculated field (apply to every sheet):
Region Filter =
  [Region] = [Selected Region]
-- Drag to Filters shelf → set to True on each sheet

-- Sheet 1: Access Improvement Distribution (Box Plot)
-- Rows:    AVG([Access Improvement (pp)])
-- Mark:    Circle · Analysis → Aggregate Measures: OFF (disaggregate)
-- Add:     Analytics pane → Box Plot
-- Colour:  Efficiency Band
--          High = green · Medium = amber · Low = red
-- Tooltip: ProjectName, District, [Access Improvement (pp)],
--          [Cost per Person Served], Efficiency Band

-- Sheet 2: Survey Scores by District (Heat Map)
-- Columns: SurveyRound (1, 2, 3)
-- Rows:    District
-- Mark:    Square
-- Colour:  AVG([Survey Composite]) — diverging palette
--          Red < 60 · White = 75 · Green > 85
-- Tooltip: District, SurveyRound, SanitationScore,
--          WaterQualityScore, CommunityEngagementScore, Survey Composite

-- Sheet 3: Funder Mix — Stacked Bar
-- Columns: SUM(AmountUSD)
-- Rows:    Country (sorted by SUM(AmountUSD) descending)
-- Colour:  FunderType
-- Label:   Table calculation → Percent of Total
--          Compute using: FunderType

-- Sheet 4: District Scatter — Impact vs Cost (Quadrant Chart)
-- Columns: AVG([Cost per Person Served])
-- Rows:    AVG([Access Improvement (pp)])
-- Size:    SUM(PopulationServed)
-- Colour:  Target Met
-- Reference lines:
--   Vertical:   AVG([Cost per Person Served]) · dashed grey
--   Horizontal: Constant 0.80 · dashed orange · label "80% Target"
-- Quadrant reading:
--   Top-left:     Low cost + High impact  →  best performers
--   Bottom-right: High cost + Low impact  →  flag for review

Dashboard 3 — Impact Scorecard

The Impact Scorecard is the Board and donor-facing view — clean, minimal, one screen. Every number is a headline finding. It should be readable as a screenshot and as an interactive embed on a donor's website.

-- Layout: Light theme (white background)
-- Contrast with the dark Dashboards 1 and 2

-- Row 1: Headline KPI strip (5 large number text sheets):
--   1.48M people served · $18.40 cost/person · +47.2pp avg improvement
--   74% targets met · 76.2 survey composite score

-- Row 2: Bullet Charts — one per region — Actual vs 80% target
-- Construction:
--   Step 1: Rows = Region · Columns = AVG([WaterAccessAfter])
--           Mark type = Bar · Colour = light grey
--   Step 2: Drag AVG([WaterAccessAfter]) to Columns again
--           → Dual Axis → Synchronise axes
--           Second axis: Mark type = Gantt Bar · width 3px · dark charcoal
--   Step 3: Analytics → Reference Line → Constant = 0.80
--           Format: dashed orange · label "80% Target"
--   Step 4: Analytics → Reference Band (background zones):
--           0–60%:    red zone
--           60–75%:   amber zone
--           75–100%:  green zone

-- Row 3: Dual-axis line chart — Global access rate 2022–2025
--   Primary axis:   AVG([WaterAccessAfter]) by StartYear
--                   Solid green line (#22c55e)
--   Secondary axis: SUM([People Gained Access]) by StartYear
--                   Area chart · blue · 30% opacity (#0ea5e9)
--   Label the final data point on both axes

-- Row 4: Static text object — donor-facing summary:
--   "In 2025, ClearPath International delivered clean water access
--    to 1.48 million people across 5 regions at an average cost of
--    $18.40 per person. 74% of project sites exceeded the 80% target."

Assembling the Tableau Story

-- Story setup:
-- New Story → Size: Generic Desktop (1366 x 768)
-- Title: "ClearPath International — Water Access Impact Report 2022–2025"
-- Navigator style: Dots · Caption position: Bottom

-- Scene 1: "Where we work and who we reach"
--   Dashboard: Global Programme Overview
--   Caption: "80 projects. 5 regions. 1.48 million people with clean water."

-- Scene 2: "What's happening on the ground"
--   Dashboard: Regional Deep Dive
--   Caption: "Use the region selector to explore district-level outcomes."
--   Set parameter default: Sub-Saharan Africa

-- Scene 3: "Our impact against targets"
--   Dashboard: Impact Scorecard
--   Caption: "74% of sites exceeded the 80% access target. $18.40/person."

-- Pre-publishing checklist:
--   All dashboards fit 1366x768 without scrollbars           ☐
--   All filter and highlight actions tested in Story view     ☐
--   Parameter control visible and labelled on Dashboard 2    ☐
--   No sheet tabs visible — Presentation mode enabled        ☐
--   Tooltip text uses plain English — no raw field names     ☐
--   NULLIF() and ZN() wrappers in all division calculations  ☐
--   Region colours locked across all three dashboards:
--     SSA=#f97316  SA=#22c55e  SEA=#0ea5e9
--     LATAM=#a78bfa  MENA=#fbbf24                            ☐
--   Published to Tableau Public with description + tags      ☐
--   Embed code tested in a standalone HTML page              ☐
💡 Teacher's Note
The most common capstone mistake is treating the three dashboards as three separate projects rather than one connected story. A viewer should be able to start at Dashboard 1 — see the global picture — click a region on the map, land on Dashboard 2 with that region pre-selected, then navigate to Dashboard 3 to compare it to the global target. That journey requires deliberate action wiring, a parameter that persists across scenes, and consistent colour coding so the same region is always the same colour everywhere. When a Board member asks "how is Sub-Saharan Africa doing?" — they should be able to answer that question in three clicks without touching a filter. That is what separates a functional dashboard from a professional one.

🔍 Practice

Q1. Describe exactly how the filter action on Dashboard 1 works — what triggers it, what it filters, and what happens when the user clears the selection.




Q2. The Region Total Served field uses a FIXED LOD expression. What would go wrong if you used a plain SUM(PopulationServed) on the same sheet as a Country filter?




Q3. The bullet chart on Dashboard 3 uses a dual axis. Walk through the four construction steps and explain why a plain bar chart alone is less useful for the Board.



🟢 Quiz

Q1. The capstone uses Tableau relationships rather than manual JOINs to connect the three tables. Why does this matter specifically for the projects and funding tables?







Q2. Dashboard 2 uses a parameter rather than a quick filter to select the region. What is the practical advantage?







Q3. The scatter plot on Dashboard 2 has four quadrants. Which quadrant is most important for the Operations Manager to investigate and why?






Course Complete

You've completed the Tableau course.

From connecting your first CSV to publishing a three-dashboard interactive story on Tableau Public — 60 lessons, one continuous goal: making data visible to the people who need to act on it.

Lessons 1–15: Beginner — connecting data, basic charts, and first dashboards

Lessons 16–30: Intermediate — calculated fields, filters, parameters, and maps

Lessons 31–45: Advanced — LOD expressions, table calculations, and dashboard actions

Lessons 46–60: Final Section — storytelling, Tableau Public, and the capstone