THE FLAWLESS TABLEAU WATERFALL CHART
A step-by-step Tableau project that shows how to build a clean waterfall chart using a single-axis Gantt bar method, with a minimal dummy dataset, calculated fields, and region/year filtering.
The Flawless Tableau Waterfall Chart (Gantt Method)
Most Tableau waterfall chart tutorials work—until your data becomes even slightly realistic.
As soon as you introduce subtotals, multiple business drivers, or filters like region and fiscal year, the chart starts breaking or becoming hard to explain.
This guide shows a cleaner approach.
Instead of forcing Tableau into a bar chart workaround, we will use a single-axis Gantt method. The dataset stays simple, and all logic is handled through calculated fields.
You can explore the full interactive dashboard here:
What You’ll Build
By the end of this tutorial, you will have a waterfall chart that is not only visually correct, but also easy to maintain and extend. It will support filtering by region and fiscal year and will behave consistently even with subtotals.
Dataset Design (Keep This Simple)
We are intentionally using a minimal dataset with only five fields:
- Fiscal Year
- Region
- Step Order
- Waterfall Segment
- Value
There are no helper columns. No “type” field. No pre-labeling.
This keeps the data easy to understand and shifts all logic into Tableau.
📄 Download Waterfall Dataset (CSV)
A clean dataset builds trust. If someone opens your CSV and immediately understands it, your project feels far more professional.
Phase 1 — Load and Inspect Data
Start by connecting Tableau to your dataset. Once loaded, confirm that all five fields are present and correctly typed.
Phase 2 — Create a Basic Bar Chart
Before building the waterfall, create a simple bar chart.
Drag:
- Waterfall Segment → Columns
- Value → Rows
Then sort using Step Order (ascending).
This chart is not correct yet — it simply shows the raw structure of the data.
Phase 3 — Create the Core Calculated Fields
This is where the waterfall logic is built.
A key principle here:
- Structure (logic) is handled by one field
- Color (visual) is handled by another
This separation prevents Tableau from breaking the calculation when color is added.
wf_bar_type
This defines whether a row is a checkpoint (Total) or a movement (Delta).
// Name: wf_bar_type
// Purpose: Classify each segment as Total or Delta
CASE [Waterfall Segment]
WHEN 'Initial Pipeline' THEN 'Total'
WHEN 'Mid-Year Forecast' THEN 'Total'
WHEN 'Final Commit' THEN 'Total'
ELSE 'Delta'
END
wf_bar_color
This is only used for color.
// Name: wf_bar_color
// Purpose: Assign colors without breaking table calculations
IF ATTR([wf_bar_type]) = 'Total' THEN 'Total'
ELSEIF SUM([Value]) > 0 THEN 'Increase'
ELSE 'Decrease'
END
Using `ATTR()` ensures Tableau does not change the calculation context when color is added.
wf_value_to_sum
This controls how the running total is calculated.
// Name: wf_value_to_sum
// Purpose: Feed the running total correctly
CASE [Waterfall Segment]
WHEN 'Initial Pipeline' THEN [Value]
WHEN 'Mid-Year Forecast' THEN 0
WHEN 'Final Commit' THEN 0
ELSE [Value]
END
The first total starts the waterfall.
Other totals are checkpoints and should not be added again.
wf_running_total
// Name: wf_running_total
// Purpose: Calculate the cumulative balance
RUNNING_SUM(SUM([wf_value_to_sum]))
This represents the actual value after each step.
wf_position_fixed
// Name: wf_position_fixed
// Purpose: Define where each bar starts
IF ATTR([wf_bar_type]) = 'Total' THEN 0
ELSE [wf_running_total]
END
Totals start at zero.
Movement bars start at the current running position.
wf_size_fixed
// Name: wf_size_fixed
// Purpose: Define bar height and direction
IF ATTR([wf_bar_type]) = 'Total' THEN [wf_running_total]
ELSE -SUM([Value])
END
This creates the waterfall effect:
- totals draw full bars
- deltas connect visually
wf_label
// Name: wf_label
// Purpose: Show the value after each step
[wf_running_total]
Phase 4 — Build the Waterfall Chart
Now convert the chart.
- Change Marks → Gantt Bar
- Replace Rows →
wf_position_fixed
Then drag:
wf_size_fixed→ Sizewf_bar_color→ Colorwf_label→ Label
Your chart should now look like a proper waterfall.
Phase 5 — Validate the View
Before formatting, make sure:
- One Fiscal Year is selected
- One Region is selected
If not, Tableau will aggregate multiple waterfalls together.
If something looks slightly off, verify:
→ Compute Using → Waterfall Segment
In simple views, Tableau often handles this automatically.
Why Adding Color Broke the Chart
At one point, the chart worked - until color was added.
This happens because Tableau may change how calculations are grouped when a new dimension is introduced.
The fix was:
- Separate structure (
wf_bar_type) from color - Use
ATTR()inside the color calculation
This keeps the logic stable while still allowing color.
What You Learned
This project shows how to:
- Keep datasets simple
- Move logic into calculated fields
- Build stable waterfall charts
- Avoid common Tableau pitfalls
- Separate logic from presentation
Why This Method Works
A normal bar chart only controls height. A Gantt chart controls:
- starting position
- bar length
That extra control is what makes the waterfall align correctly.
Final Thought
This approach scales cleanly into dashboards, forecasting models, and executive reporting.