Forum Discussion
Help Required to Create a Custom Matrix
- 6 years ago
Hi,
According to your description, i think i can not completely reach your requirement, but i have a workaround.
You can create a table called 'Heat Map' like this by Enter Data:
Copy this table called 'Heat Map (2)' in Query Editor and unpivot it, it shows:
Then choose Table Hearmap visual from App Source to show Table 'Heat Map', it shows:
Refer to your table posted, i create these measures to show each risk's X-axis and Y-axis in above heatmap visual:
risk 1-check = var a = CALCULATE(MAX('Table'[Residual Score]),FILTER('Table','Table'[Risk Title]="Risk 1"))-MAX('Hear Map (2)'[Value]) return IF(a>=0,a,100) risk 2-check = var a = CALCULATE(MAX('Table'[Residual Score]),FILTER('Table','Table'[Risk Title]="Risk 2"))-MAX('Hear Map (2)'[Value]) return IF(a>=0,a,100) risk 3-check = var a = CALCULATE(MAX('Table'[Residual Score]),FILTER('Table','Table'[Risk Title]="Risk 3"))-MAX('Hear Map (2)'[Value]) return IF(a>=0,a,100) risk 4-check = var a = CALCULATE(MAX('Table'[Residual Score]),FILTER('Table','Table'[Risk Title]="Risk 4"))-MAX('Hear Map (2)'[Value]) return IF(a>=0,a,100) risk 1 = IF([risk 1-check]=MINX(ALLSELECTED('Hear Map (2)'),[risk 1-check]),1,0) risk 2 = IF([risk 2-check]=MINX(ALLSELECTED('Hear Map (2)'),[risk 2-check]),1,0) risk 3 = IF([risk 3-check]=MINX(ALLSELECTED('Hear Map (2)'),[risk 3-check]),1,0) risk 4 = IF([risk 4-check]=MINX(ALLSELECTED('Hear Map (2)'),[risk 4-check]),1,0)Then try these two measures:
_Category = SWITCH ( TRUE, MAX ( 'Table'[Risk Title] ) = "Risk 1", CALCULATE ( MAX ( 'Hear Map (2)'[Category] ), FILTER ( 'Hear Map (2)', [risk 1] = 1 ) ), MAX ( 'Table'[Risk Title] ) = "Risk 2", CALCULATE ( MAX ( 'Hear Map (2)'[Category] ), FILTER ( 'Hear Map (2)', [risk 2] = 1 ) ), MAX ( 'Table'[Risk Title] ) = "Risk 3", CALCULATE ( MAX ( 'Hear Map (2)'[Category] ), FILTER ( 'Hear Map (2)', [risk 3] = 1 ) ), MAX ( 'Table'[Risk Title] ) = "Risk 4", CALCULATE ( MAX ( 'Hear Map (2)'[Category] ), FILTER ( 'Hear Map (2)', [risk 4] = 1 ) ) ) _Attribute = SWITCH ( TRUE, MAX ( 'Table'[Risk Title] ) = "Risk 1", CALCULATE ( MAX ( 'Hear Map (2)'[Attribute] ), FILTER ( 'Hear Map (2)', [risk 1] = 1 ) ), MAX ( 'Table'[Risk Title] ) = "Risk 2", CALCULATE ( MAX ( 'Hear Map (2)'[Attribute] ), FILTER ( 'Hear Map (2)', [risk 2] = 1 ) ), MAX ( 'Table'[Risk Title] ) = "Risk 3", CALCULATE ( MAX ( 'Hear Map (2)'[Attribute] ), FILTER ( 'Hear Map (2)', [risk 3] = 1 ) ), MAX ( 'Table'[Risk Title] ) = "Risk 4", CALCULATE ( MAX ( 'Hear Map (2)'[Attribute] ), FILTER ( 'Hear Map (2)', [risk 4] = 1 ) ) )The result shows:
Here is my test pbix file:
Hope this helps.
Best Regards,
Giotto Zhi
Hi,
According to your description, i think i can not completely reach your requirement, but i have a workaround.
You can create a table called 'Heat Map' like this by Enter Data:
Copy this table called 'Heat Map (2)' in Query Editor and unpivot it, it shows:
Then choose Table Hearmap visual from App Source to show Table 'Heat Map', it shows:
Refer to your table posted, i create these measures to show each risk's X-axis and Y-axis in above heatmap visual:
risk 1-check =
var a = CALCULATE(MAX('Table'[Residual Score]),FILTER('Table','Table'[Risk Title]="Risk 1"))-MAX('Hear Map (2)'[Value])
return
IF(a>=0,a,100)
risk 2-check =
var a = CALCULATE(MAX('Table'[Residual Score]),FILTER('Table','Table'[Risk Title]="Risk 2"))-MAX('Hear Map (2)'[Value])
return
IF(a>=0,a,100)
risk 3-check =
var a = CALCULATE(MAX('Table'[Residual Score]),FILTER('Table','Table'[Risk Title]="Risk 3"))-MAX('Hear Map (2)'[Value])
return
IF(a>=0,a,100)
risk 4-check =
var a = CALCULATE(MAX('Table'[Residual Score]),FILTER('Table','Table'[Risk Title]="Risk 4"))-MAX('Hear Map (2)'[Value])
return
IF(a>=0,a,100)
risk 1 = IF([risk 1-check]=MINX(ALLSELECTED('Hear Map (2)'),[risk 1-check]),1,0)
risk 2 = IF([risk 2-check]=MINX(ALLSELECTED('Hear Map (2)'),[risk 2-check]),1,0)
risk 3 = IF([risk 3-check]=MINX(ALLSELECTED('Hear Map (2)'),[risk 3-check]),1,0)
risk 4 = IF([risk 4-check]=MINX(ALLSELECTED('Hear Map (2)'),[risk 4-check]),1,0)Then try these two measures:
_Category =
SWITCH (
TRUE,
MAX ( 'Table'[Risk Title] ) = "Risk 1", CALCULATE (
MAX ( 'Hear Map (2)'[Category] ),
FILTER ( 'Hear Map (2)', [risk 1] = 1 )
),
MAX ( 'Table'[Risk Title] ) = "Risk 2", CALCULATE (
MAX ( 'Hear Map (2)'[Category] ),
FILTER ( 'Hear Map (2)', [risk 2] = 1 )
),
MAX ( 'Table'[Risk Title] ) = "Risk 3", CALCULATE (
MAX ( 'Hear Map (2)'[Category] ),
FILTER ( 'Hear Map (2)', [risk 3] = 1 )
),
MAX ( 'Table'[Risk Title] ) = "Risk 4", CALCULATE (
MAX ( 'Hear Map (2)'[Category] ),
FILTER ( 'Hear Map (2)', [risk 4] = 1 )
)
)
_Attribute =
SWITCH (
TRUE,
MAX ( 'Table'[Risk Title] ) = "Risk 1", CALCULATE (
MAX ( 'Hear Map (2)'[Attribute] ),
FILTER ( 'Hear Map (2)', [risk 1] = 1 )
),
MAX ( 'Table'[Risk Title] ) = "Risk 2", CALCULATE (
MAX ( 'Hear Map (2)'[Attribute] ),
FILTER ( 'Hear Map (2)', [risk 2] = 1 )
),
MAX ( 'Table'[Risk Title] ) = "Risk 3", CALCULATE (
MAX ( 'Hear Map (2)'[Attribute] ),
FILTER ( 'Hear Map (2)', [risk 3] = 1 )
),
MAX ( 'Table'[Risk Title] ) = "Risk 4", CALCULATE (
MAX ( 'Hear Map (2)'[Attribute] ),
FILTER ( 'Hear Map (2)', [risk 4] = 1 )
)
)The result shows:
Here is my test pbix file:
Hope this helps.
Best Regards,
Giotto Zhi