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

The Power BI DataViz World Championships are on! With four chances to enter, you could win a spot in the LIVE Grand Finale in Las Vegas. Show off your skills.

Reply
Anonymous
Not applicable

Running Total with exclusions

Hi all,

I am trying to recreate a chart that the business uses currently in Excel, that I would like to move to Power BI. It is like a waterfall chart, but has Targets included in the chart as well (Budget and Forecast) like this:

Andshepch_0-1656676829685.png

 

to do this we have a table like this:

CategoryCV €MIndexCV €M 2Base 2Base 3
Q1Sold Churn1.8301.830.000.00
Q1 Unsold Churn4.9814.981.831.83
Q1 Sold Medium1.3421.346.816.81
Q1 Unsold Medium3.5933.598.158.15
Fcst Q125.2240.0011.740.00
Bud Q125.0450.0011.740.00
Q2 Sold Churn1.8361.8311.7411.74
Q2 Unsold Churn4.9874.9813.5713.57
Q2 Sold Medium1.3481.3418.5518.55
Q2 Unsold Medium3.5993.5919.8919.89
Deal 18.20108.2023.4823.48
Deal 26.20116.2031.6831.68
Deal 35.30125.3037.8837.88
H1 YTD Fcst56.09130.0043.180.00
H1 YTD Bud70.14140.0043.180.00
Q3 Unsold Churn6.81156.8143.1843.18
Q3 Unsold Medium4.93164.9349.9949.99
Deal 417.301717.3054.9254.92
Deal 54.60184.6072.2272.22
Q3 YTD Fcst99.27190.0076.820.00
Q3 YTD Bud98.23200.0076.820.00
Q4 Unsold Churn6.81216.8176.8276.82
Q4 Unsold Medium4.93224.9383.6383.63
Deal 65.60235.6088.5688.56
Deal 71.90241.9094.1694.16
FY YTD Fcst145.44250.0096.060.00
FY YTD Bud145.44260.0096.060.00

 

The first 3 columns (Category, CV €M and Index) are the data table that we get from another system, and the last 3 columns are calculated:

CV €M 2 is simply the CV €M column, but Zero when the Category contains "Bud" or "Fcst"

Base 2 is the running total of CV €M 2 but offset by 1 row
Base 3 is Base 2, but Zero when the Category contains "Bud" or "Fcst"

We then use CV €M and Base 3 for the chart data

I am trying to calculate measures in DAX (Not M) to replicate these columns, and I can get to a running total:

 

Cumulative Base =
CALCULATE (
[CV €M],
FILTER (
ALLSELECTED ( 'FY Chart Data' ),
'FY Chart Data'[Rank] < MAX ( 'FY Chart Data'[Rank] )
)
)
 
But I am going round in circles tryng to do the offset, and then the Zero values wher the category is "Bud" or "Fcst". Any and all help/pointers would be greatly appreciated.
 
Thank you

 

 

1 ACCEPTED SOLUTION
v-jianboli-msft
Community Support
Community Support

Hi @Anonymous ,

 

Here is the DAX of these columns:

 

CV €M 2 =
IF (
    CONTAINSSTRING ( [Category], "Fcst" ) || CONTAINSSTRING ( [Category], "Bud" ),
    0,
    [CV €M]
)

Base 2 =
VAR _a =
    CALCULATE (
        SUM ( Table1[CV €M 2] ),
        FILTER ( Table1, [Index] < EARLIER ( [Index] ) )
    )
RETURN
IF ( ISBLANK ( _a ), 0, _a )

Base 3 =
IF (
    CONTAINSSTRING ( [Category], "Fcst" ) || CONTAINSSTRING ( [Category], "Bud" ),
    0,
    [Base 2]
)

 

Final output:

vjianbolimsft_0-1657012498473.png

 

Best Regards,

Jianbo Li

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

2 REPLIES 2
v-jianboli-msft
Community Support
Community Support

Hi @Anonymous ,

 

Here is the DAX of these columns:

 

CV €M 2 =
IF (
    CONTAINSSTRING ( [Category], "Fcst" ) || CONTAINSSTRING ( [Category], "Bud" ),
    0,
    [CV €M]
)

Base 2 =
VAR _a =
    CALCULATE (
        SUM ( Table1[CV €M 2] ),
        FILTER ( Table1, [Index] < EARLIER ( [Index] ) )
    )
RETURN
IF ( ISBLANK ( _a ), 0, _a )

Base 3 =
IF (
    CONTAINSSTRING ( [Category], "Fcst" ) || CONTAINSSTRING ( [Category], "Bud" ),
    0,
    [Base 2]
)

 

Final output:

vjianbolimsft_0-1657012498473.png

 

Best Regards,

Jianbo Li

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

tamerj1
Super User
Super User

Hi @Anonymous 

please try

 

Cumulative Base =
VAR SelectedData =
    ALLSELECTED ( 'FY Chart Data' )
VAR CurrentRank =
    MAX ( 'FY Chart Data'[Rank] )
VAR PreviousData =
    FILTER (
        SelectedData,
        'FY Chart Data'[Rank] <= CurrentRank
            && NOT ( 'FY Chart Data'[category] IN { "Bud", "Fcst" } )
    )
RETURN
    CALCULATE ( [CV €M], PreviousData )

 

Helpful resources

Announcements
Feb2025 Sticker Challenge

Join our Community Sticker Challenge 2025

If you love stickers, then you will definitely want to check out our Community Sticker Challenge!

Jan NL Carousel

Fabric Community Update - January 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors