cancel
Showing results for
Did you mean:

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

## Cumulative Sum of 2 measures based on seperate age calculations

I'm relatively new to PBI, but I have faily solid understand of how it works but I'm struggling to get this to work and cant seem to find anything out there than could help me solve my problem.

I have 2 tables, which have a 1:n relationship between them. In their respective tables I have calculated columns with what I will refer to as an "age calculation" which gives me a duration in days between 2 dates which represent timestamps of when the relative events occur.

Table 1 the key events are: Application_Date & Paid_Date which i use for the age/duration calculation

Table 2 the key events are: Paid_Date & Fraud_Date which I use to calculate age/duration

The events in each table also have a Transaction_Amount which I am able to calculate a measure that gives me the sum of the transactions by the respective durations. I am also able to calculate the cumulative SUM for these amounts over these same durations

My problem starts when I try to plot these on the same graph (line and clusters column chart). Depending on which age/duration I use for the shared axis, the two measures based on the other duration doesnt calculate the cumulative amount properly.

I assume that this is because the two age/duration calculations are seperate but I am unable to see a way where I can plot them against a "common duration" on the axis. I thought I might beable to create a seperate table for these durations and set up a relationship but that doesnt work as I would need to remove the current 1:n relationship which is used for many other things.

The green columns and red line here are fine. The black columns should be offset to the right, and normally occur from day 10 onwards and the yellow line should show that cumulative value.

I have pasted both cumulative total expressions below.

```Total Revenue Running Total =
CALCULATE (
SUM(Transaction_History[Transaction_Amount]),
FILTER (ALLSELECTED(Transaction_History), Transaction_History[Days Between App & Transaction] <= MAX (Transaction_History[Days Between App & Transaction])),Transaction_History[Transaction_Type]="sale",Transaction_History[Response_Code]="0"
)```

```Total CB Value Running Total =
CALCULATE (
SUM(Fraud_History[Transaction_Amount]),
FILTER (ALLSELECTED(Fraud_History), Fraud_History[Days Between Transaction & Fraud] <= MAX (Fraud_History[Days Between Transaction & Fraud])), Fraud_History[Fraud_Type] = "chargeback"
)```

If I can solve this problem my next step would be to add an addition measure which shows the NET value between these 2 cumulative measures.

My overall aim to be able to represent a 'lifetime value' for certain subsets of customer who are deemed "High-Risk"

Any help, guidance is appreciated.

1 ACCEPTED SOLUTION
Employee

Hi @martinrowe,

My problem starts when I try to plot these on the same graph (line and clusters column chart). Depending on which age/duration I use for the shared axis, the two measures based on the other duration doesnt calculate the cumulative amount properly.

Suggestion 1: Rewrite one of the two measures based on the other duration. For example, if you use the duration column from "Transaction_History" table as shared axis, then you can rewrite the "Total CB Value Running Total" measure like below.

```Total CB Value Running Total =
VAR currentDuration =
MAX ( Transaction_History[Days Between App & Transaction] )
RETURN
CALCULATE (
SUM ( Fraud_History[Transaction_Amount] ),
FILTER (
ALLSELECTED ( Fraud_History ),
Fraud_History[Days Between Transaction & Fraud] <= currentDuration
),
Fraud_History[Fraud_Type] = "chargeback"
)
```
I thought I might beable to create a seperate table for these durations and set up a relationship but that doesnt work as I would need to remove the current 1:n relationship which is used for many other things.

Another suggestion: Create a separate table for these durations and do not set up any relationships with the other two tables. Then rewrite the two formulas like below, and last use the duration column from the new created table as shared axis on the chart.

```Total Revenue Running Total =
VAR currentDuration =
MAX ( NewTable[Days Between App & Transaction] )
RETURN
CALCULATE (
SUM ( Transaction_History[Transaction_Amount] ),
FILTER (
ALLSELECTED ( Transaction_History ),
Transaction_History[Days Between App & Transaction] <= currentDuration
),
Transaction_History[Transaction_Type] = "sale",
Transaction_History[Response_Code] = "0"
)
```
```Total CB Value Running Total =
VAR currentDuration =
MAX ( NewTable[Days Between App & Transaction] )
RETURN
CALCULATE (
SUM ( Fraud_History[Transaction_Amount] ),
FILTER (
ALLSELECTED ( Fraud_History ),
Fraud_History[Days Between Transaction & Fraud] <= currentDuration
),
Fraud_History[Fraud_Type] = "chargeback"
)
```

Regards

2 REPLIES 2
Employee

Hi @martinrowe,

My problem starts when I try to plot these on the same graph (line and clusters column chart). Depending on which age/duration I use for the shared axis, the two measures based on the other duration doesnt calculate the cumulative amount properly.

Suggestion 1: Rewrite one of the two measures based on the other duration. For example, if you use the duration column from "Transaction_History" table as shared axis, then you can rewrite the "Total CB Value Running Total" measure like below.

```Total CB Value Running Total =
VAR currentDuration =
MAX ( Transaction_History[Days Between App & Transaction] )
RETURN
CALCULATE (
SUM ( Fraud_History[Transaction_Amount] ),
FILTER (
ALLSELECTED ( Fraud_History ),
Fraud_History[Days Between Transaction & Fraud] <= currentDuration
),
Fraud_History[Fraud_Type] = "chargeback"
)
```
I thought I might beable to create a seperate table for these durations and set up a relationship but that doesnt work as I would need to remove the current 1:n relationship which is used for many other things.

Another suggestion: Create a separate table for these durations and do not set up any relationships with the other two tables. Then rewrite the two formulas like below, and last use the duration column from the new created table as shared axis on the chart.

```Total Revenue Running Total =
VAR currentDuration =
MAX ( NewTable[Days Between App & Transaction] )
RETURN
CALCULATE (
SUM ( Transaction_History[Transaction_Amount] ),
FILTER (
ALLSELECTED ( Transaction_History ),
Transaction_History[Days Between App & Transaction] <= currentDuration
),
Transaction_History[Transaction_Type] = "sale",
Transaction_History[Response_Code] = "0"
)
```
```Total CB Value Running Total =
VAR currentDuration =
MAX ( NewTable[Days Between App & Transaction] )
RETURN
CALCULATE (
SUM ( Fraud_History[Transaction_Amount] ),
FILTER (
ALLSELECTED ( Fraud_History ),
Fraud_History[Days Between Transaction & Fraud] <= currentDuration
),
Fraud_History[Fraud_Type] = "chargeback"
)
```

Regards

Thank for the great feedback. I went with your first suggestion, but in doing so created a second version of the measure as the original one was useful the way it was in other areas.

Though a the first suggestion does get me to my end point now, It does feel a little bit like a fudge in the context of the wider data model I have, so i'm going to continue to look at your 2nd suggestion to see if there is a way I can make this work for this and other similar calculations/visulations I have

Thanks again - Martin

Announcements

#### Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

#### Power BI Monthly Update - June 2024

Check out the June 2024 Power BI update to learn about new features.

#### New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

Top Solution Authors
Top Kudoed Authors