Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.

Reply
shahrukhgaffar0
New Member

Help With Waterfall Visual

I'm working on a custom waterfall chart in Power BI using a calculated table and DAX logic. I’ve managed to get most of it working correctly — including custom sorting and indexing — but I'm stuck on one last piece.

I've created a calculated table like this 

WaterFall Data Table =
VAR YTD_Table =
SELECTCOLUMNS(
ROW(
"Category", "YTD Revenue",
"Amount", [1.2.Cumulative Closed Sales]
),
"Category", [Category],
"Amount", [Amount]
)
VAR NORMALISED_SALES =
ADDCOLUMNS(
SUMMARIZE(
FILTER(
'Sales Data',
'Sales Data'[Stage] IN {
"4.Submitted Proposal",
"5.Tender Evaluation",
"6.Negotiations",
"7.Verbal Award"
}
),
'Sales Data'[Opportunity Name]
),
"Category", 'Sales Data'[Opportunity Name],
"Amount",
CALCULATE(
[WaterFall Norm Sales],
'Sales Data'[Opportunity Name] = EARLIER('Sales Data'[Opportunity Name])
)
)


VAR Normalised_Sales_Final =
SELECTCOLUMNS(
NORMALISED_SALES,
"Category", [Category],
"Amount", [Amount]
)
VAR VARIENCE =
SELECTCOLUMNS(
ROW(
"Category", "Variance",
"Amount", [Variance]
),
"Category", [Category],
"Amount", [Amount]
)

VAR TARGET_VALUE = SELECTCOLUMNS(
ROW(
"Category", "Target",
"Amount", [3.2.Cumulative Target Sales]
),
"Category", [Category],
"Amount", [Amount]
)

RETURN
UNION(
YTD_Table,
Normalised_Sales_Final,VARIENCE,TARGET_VALUE
)

 

I also created a calculated column to dynamically sort the bars in the right order using this logic:

 

WaterfallIndex = VAR TotalRows = COUNTROWS('WaterFall Data Table') VAR BaseRank = RANKX( FILTER('WaterFall Data Table', NOT 'WaterFall Data Table'[Category] IN {"YTD Revenue", "Target", "Variance"} ), 'WaterFall Data Table'[Category], , ASC, DENSE ) RETURN SWITCH( TRUE(), 'WaterFall Data Table'[Category] = "YTD Revenue", 1, 'WaterFall Data Table'[Category] = "Variance", TotalRows - 1, 'WaterFall Data Table'[Category] = "Target", TotalRows, BaseRank + 1 )

 

  • I have all bars showing in the right order.

  • "Variance" appears before "Target."

  • Colors and sorting are fine.

    The “Target” bar is currently displayed as a total, meaning it continues from the last value in the waterfall.

    But what I want is:

  • The “Target” bar should start from zero and rise to the Target value — not be a cumulative value based on previous bars.

    Like this:

    • YTD Revenue → starts from 0

    • Projects, etc. → Project Values

    • Variance → shows shortfall

    • Target → appears independent, starting from zero to target value (like a benchmark)

Like Below is Sample Waterfall

 

shahrukhgaffar0_1-1760184348796.png


This is What i Acheived So Far



shahrukhgaffar0_0-1760184201135.png

 

1 REPLY 1
v-achippa
Community Support
Community Support

Hi @shahrukhgaffar0,

 

Thank you for reaching out to Microsoft Fabric Community.

 

Thank you @DataNinja777 for the prompt response.

 

As we haven’t heard back from you, we wanted to kindly follow up to check if the solution provided by the user for the issue worked? or let us know if you need any further assistance.

 

Thanks and regards,

Anjan Kumar Chippa

Helpful resources

Announcements
FabCon Global Hackathon Carousel

FabCon Global Hackathon

Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Solution Authors
Top Kudoed Authors