Forum Discussion
measure schedule performance
Hi,
I have projects with their Tollgate dates (ITG0, ITG0.1 etc.) which is visulized in a matrix table. I have calculated the datediff between Contract Baseline and ActualsSchedule.
Now I would like to add another measure which will indicate how well the plan is going in %.
so for example for ITG0.1
Take datediff between ITG0.1 Actual with ITG0 Actual and divide with datediff ITG0.1 contract and ITG0 contract.
continuing like this for ITG1.
Take datediff between ITG1 Actual with ITG0 Actual and divide with datediff ITG1 contract and ITG0 contract.
anyone know how to create a measure with the % Performance?
just and exaple case below
| Example 2 | ITG 0 | ITG 0.1 | ITG 1 | ITG 2 |
| Planned Date | 2022-01-01 | 2023-02-01 | 2024-03-01 | 2025-04-01 |
| Actual Date | 2022-01-01 | 2023-02-10 | 2024-02-25 | 2025-04-25 |
| Days Variance | 0 | -9 | 5 | -24 |
| % Performance | 100% | 102% | 99% | 102% |
BR
J
Hi jalaomar ,
Sorry for late back, I modify the formula:
% Performance = DIVIDE ( DATEDIFF ( MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Tollgate] = "ITG 0" && 'Table'[Baseline] = "Actual Date" ), 'Table'[Date] ), MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Baseline] = "Actual Date" && 'Table'[Tollgate] = MAX ( 'Table'[Tollgate] ) ), 'Table'[Date] ), DAY ), DATEDIFF ( MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Tollgate] = "ITG 0" && 'Table'[Baseline] = "Actual Date" ), 'Table'[Date] ), MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Baseline] = "Planned Date" && 'Table'[Tollgate] = MAX ( 'Table'[Tollgate] ) ), 'Table'[Date] ), DAY ) )Get the correct result:
Best Regards,
Community Support Team _ kalyjIf this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
8 Replies
- v-yanjiang-msftCommunity Support
Hi jalaomar ,
According to your description, based on the snapshot you provided, I create a sample.
Here's my solution.
1.Create a calculated column.
Rank = RANKX ( 'Table', 'Table'[Tollgate],, ASC, DENSE )2.Create two measures.
Days Variance = DATEDIFF ( MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Baseline] = "Actual Date" && 'Table'[Tollgate] = MAX ( 'Table'[Tollgate] ) ), 'Table'[Date] ), MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Baseline] = "Planned Date" && 'Table'[Tollgate] = MAX ( 'Table'[Tollgate] ) ), 'Table'[Date] ), DAY )% Performance = DIVIDE ( DATEDIFF ( MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Rank] = MAX ( 'Table'[Rank] ) - 1 && 'Table'[Baseline] = "Actual Date" ), 'Table'[Date] ), MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Baseline] = "Actual Date" && 'Table'[Tollgate] = MAX ( 'Table'[Tollgate] ) ), 'Table'[Date] ), DAY ), DATEDIFF ( MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Rank] = MAX ( 'Table'[Rank] ) - 1 && 'Table'[Baseline] = "Actual Date" ), 'Table'[Date] ), MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Baseline] = "Planned Date" && 'Table'[Tollgate] = MAX ( 'Table'[Tollgate] ) ), 'Table'[Date] ), DAY ) )Get the result:
Based on the data structure, the result is not displaying in the same struture with your expected, but the value is correct. If you want to get the expected structure, you should create a new table.
Sort the Row column by Sort column. Don't make relationship between the two tables. Then create a measure.
Measure = SWITCH ( MAX ( 'Row'[Row] ), "Actual Date", CONVERT ( MAXX ( FILTER ( 'Table', 'Table'[Baseline] = "Actual Date" ), 'Table'[Date] ), STRING ), "Planned Date", CONVERT ( MAXX ( FILTER ( 'Table', 'Table'[Baseline] = "Planned Date" ), 'Table'[Date] ), STRING ), "Days Variance", [Days Variance], "% Performance", FORMAT ( [% Performance], "#%" ) )Get the expected result.
I attach my sample below for your reference.
Best Regards,
Community Support Team _ kalyjIf this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- jalaomarHelper IV
Hello, Thanks for supporting with this.
but just found that the %Performance is not calculating as I would like to.
below you can view the expected calculation and outcome
so for each tollgate calculate the datediff = Actual ITG0 - Contract ITG0
ITG0 % Performance = Actual ITG0 / Contract ITG0
ITG0.1 % Performance = Actual ITG0.1-Actual ITG0 / Contract ITG0.1 - Contract ITG0
ITG1 % Performance = Actual ITG1-Actual ITG0 / Contract ITG1 - Contract ITG0
After each tollgate the % performance is always calculated against ITG0.
Hope you can follow what I mean. Is there a way to tweak the measure you have created a little bit?
- v-yanjiang-msftCommunity Support
Hi jalaomar ,
Sorry for late back, I modify the formula:
% Performance = DIVIDE ( DATEDIFF ( MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Tollgate] = "ITG 0" && 'Table'[Baseline] = "Actual Date" ), 'Table'[Date] ), MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Baseline] = "Actual Date" && 'Table'[Tollgate] = MAX ( 'Table'[Tollgate] ) ), 'Table'[Date] ), DAY ), DATEDIFF ( MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Tollgate] = "ITG 0" && 'Table'[Baseline] = "Actual Date" ), 'Table'[Date] ), MAXX ( FILTER ( ALL ( 'Table' ), 'Table'[Baseline] = "Planned Date" && 'Table'[Tollgate] = MAX ( 'Table'[Tollgate] ) ), 'Table'[Date] ), DAY ) )Get the correct result:
Best Regards,
Community Support Team _ kalyjIf this post helps, then please consider Accept it as the solution to help the other members find it more quickly.