Forum Discussion

KG1's avatar
KG1
Resolver I
6 years ago
Solved

Help Required to Create a Custom Matrix

Hi I need to be able to create a matrix like this which plots a value inside a matrix based on its score. Could anyone offer some advice as to whether this would be possible and how it can be done?...
  • v-gizhi-msft's avatar
    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:

    pbix 

    Hope this helps.

     

    Best Regards,

    Giotto Zhi