Forum Discussion
Subtotal in Matrix visual dynamic calculation error
BHPler , Try using
Values FirstTimePass =
VAR CountCodes = SUM('Config'[Total Periods FirstTimePass])
VAR MainPeriod =
CONVERT(
MAXX(
ALLSELECTED(DateDim[DateCode]),
DateDim[DateCode]
),
STRING
)
VAR StartPeriod =
CONVERT(
MINX(
ALLSELECTED(DateDim[DateCode]),
DateDim[DateCode]
),
STRING
)
VAR Target = MainPeriod
VAR DisplayItem = SELECTEDVALUE('FirstTimePass Header Table'[Order])
VAR FirstCode =
CALCULATE(
SUM('FirstTimePass Header Table'[Order]),
'FirstTimePass Header Table'[Value] = StartPeriod
)
VAR LastCode =
CALCULATE(
SUM('FirstTimePass Header Table'[Order]),
'FirstTimePass Header Table'[Value] = MainPeriod
)
VAR FirstRank = IF(FirstCode = BLANK(), MIN('First Time Pass'[Date Rank]), FirstCode)
VAR LastRank = IF(LastCode = BLANK(), MAX('First Time Pass'[Date Rank]), LastCode)
VAR Reference =
CALCULATE(
SUM('First Time Pass'[KPI]),
ALL('FirstTimePass Header Table'),
'FirstTimePass Header Table'[Value] = MainPeriod
)
VAR Compare1 =
CALCULATE(
SUM('First Time Pass'[KPI]),
ALL('FirstTimePass Header Table'),
'FirstTimePass Header Table'[Value] = StartPeriod
)
VAR Compare2 =
CALCULATE(
SUM('First Time Pass'[Target]),
ALL('FirstTimePass Header Table'),
'FirstTimePass Header Table'[Value] = Target
)
VAR CompareToDate =
VAR Subtraction1 = Reference - Compare1
RETURN
IF(
HASONEFILTER('First Time Pass'[Site]),
FORMAT(Subtraction1 * 100, "#"),
FORMAT(
AVERAGEX(
VALUES('First Time Pass'[Site]),
CALCULATE(Reference - Compare1) * 100
),
"#"
)
)
VAR CompareToTarget =
VAR Subtraction2 = Reference - Compare2
RETURN
IF(
HASONEFILTER('First Time Pass'[Site]),
FORMAT(Subtraction2 * 100, "#"),
FORMAT(
AVERAGEX(
VALUES('First Time Pass'[Site]),
CALCULATE(Reference - Compare2) * 100
),
"#"
)
)
VAR ValuesFirstTimePass =
IF(
HASONEFILTER('First Time Pass'[Site]),
SUM('First Time Pass'[KPI]),
DIVIDE(
SUM('First Time Pass'[KPI]),
DISTINCTCOUNT('First Time Pass'[Site])
)
)
VAR Actual_Target =
IF(
HASONEFILTER('OEE'[Site]),
FORMAT(Compare2, "0%"),
FORMAT(
CALCULATE(
AVERAGE('First Time Pass'[Target]),
ALL('FirstTimePass Header Table'),
'FirstTimePass Header Table'[Value] = Target
),
"0%"
)
)
VAR Test =
SWITCH(
TRUE(),
DisplayItem <= LastRank && DisplayItem >= FirstRank, ValuesFirstTimePass,
DisplayItem = CountCodes + 1, IF(CompareToDate = BLANK(), BLANK(), FORMAT(CompareToDate, "#")),
DisplayItem = CountCodes + 2, Actual_Target,
DisplayItem = CountCodes + 3, IF(CompareToTarget = BLANK(), BLANK(), FORMAT(CompareToTarget, "#"))
)
RETURN
IF(Test = BLANK(), BLANK(), Test)
Thank you your solution!
It seems that now the issue is that the values for the vs Start Period and vs Target are not displaying at all:
They work perfectly for the rows, but the subtotal is missing. I would have it to calculate the "ST" for those two columns as well, meaning that in the example above it would show the difference of 97% vs 95% (i.e. the value of 2 for vs Start Period - 2410 and 1 for the vs Target).
I use a Matrix visual and have no additional filters on the page or visual.