Forum Discussion
Wanna Create Waterfall Visual
- 10 months ago
You can force that exact order (YTD first → drivers → Variance (2nd last) → Target (last)) with a disconnected steps table and one measure that returns the amount for the currently selected step.
- Disconnected steps table (order + types)
Create a calculated table:
Waterfall Steps =
DATATABLE(
"Step", STRING,
"Order", INTEGER,
"Type", STRING, -- helps with colors/“Set as total”
{
{"YTD Sales", 1, "Total"},
{"Driver A", 2, "Driver"},
{"Driver B", 3, "Driver"},
{"Driver C", 4, "Driver"},
{"Variance", 999,"Variance"},
{"Target", 1000,"Total"}
})Sort [Step] by [Order].
(Replace Driver A/B/C with your real drivers; add/remove rows as needed.)- Base measures you already have (examples)
[Sales YTD] := /* your YTD measure */
[Target Value]:= /* your target measure *//* One driver amount measure that returns value for a single category
in your fact table (adjust table/column names & logic) */
[Driver Amount] :=
VAR cat = SELECTEDVALUE ( 'Waterfall Steps'[Step] )
RETURN
CALCULATE ( [Base Amount],
TREATAS ( { cat }, 'Fact'[Category] ) )- Helper: sum of ALL driver bars (ignores current point)
[Sum Drivers] :=
SUMX (
FILTER ( ALL ( 'Waterfall Steps' ), 'Waterfall Steps'[Type] = "Driver" ),
CALCULATE (
[Base Amount],
TREATAS ( { 'Waterfall Steps'[Step] }, 'Fact'[Category] )
)
)Base Amount should be the measure that produces each driver’s signed contribution. If your drivers come from different rules, create separate measures and sum them here instead.
- Final measure used by the waterfall
[Waterfall Amount] :=
SWITCH (
TRUE(),
SELECTEDVALUE('Waterfall Steps'[Step]) = "YTD Sales", [Sales YTD],
SELECTEDVALUE('Waterfall Steps'[Step]) = "Target", [Target Value],
SELECTEDVALUE('Waterfall Steps'[Step]) = "Variance",
[Target Value] - [Sales YTD] - [Sum Drivers],
/* otherwise it's a driver step */
[Driver Amount]
)- Build the chart
- Visual: Waterfall.
- Category → Waterfall Steps[Step].
- Y axis → [Waterfall Amount].
- Click the YTD Sales bar → turn on Set as total.
- Click the Target bar → turn on Set as total.
- (Leave Variance as a regular bar; it will appear as the 2nd last because of the order.)
- Optional: add a column Color to the steps table (e.g., green for YTD, red for Variance, grey for Target) and use Data colors → Conditional formatting → Field value.
This pattern guarantees:
- YTD Sales is always the first (total) bar,
- your drivers appear in the middle in the exact order you defined,
- Variance is the second-last bar computed as the gap to Target,
- Target is the last (total) bar.
If you share your driver logic/columns, I can plug them straight into the [Driver Amount] and [Sum Drivers] pieces for you.
I hope it will help you.
Hi shahrukhgaffar0,
We would like to confirm if our community members answer resolves your query or if you need further help. If you still have any questions or need more support, please feel free to let us know. We are happy to help you.
Ilgar_Zarbali & Nasif_Azam ,Thanks for your prompt response
Thank you for your patience and look forward to hearing from you.
Best Regards,
Prashanth Are
MS Fabric community support