Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Compete to become Power BI Data Viz World Champion! First round ends August 18th. Get started.

Reply
fahadkhan
Frequent Visitor

Matrix visual Hierarchy and conditional color based on overall color

Hi everyone, 

 

I have a simple usecase for matrix visual i want to display. 

 

I have a table with Project, Project group, Team lead, task and status color in one table. 

so based on the heirachey i want to overall color of a from project group and and project level. for example. 

if any task in project group is incomplete it should show yellow, if any task in project group level is red then overall color is red. green is only possible if all tasks in proejct are green. 

 

similarly if we move one level above i.e at project level it should show color based on on project group level. for example. 

if any of the project group is red then overall project is red. if there is no red and any one of the project group is yellow then overall project is yellow and green is only possible if all project groups are green. 

here is example screen shot:

fahadkhan_0-1750087913619.png

I want to create a measure that would display color based on heirachy level. 

1 ACCEPTED SOLUTION
vojtechsima
Super User
Super User

Hey @fahadkhan 


TEst this one, bit lengthy tho:

coloring = 
var currentProject = SELECTEDVALUE('Table'[Project])
var currentStatus = SELECTEDVALUE('Table'[Task Status])
var isTaskLevel = HASONEVALUE('Table'[Task])

var delayedRedOnes = 
COUNTX(
    VALUES('Table'[Project Group]),
    CALCULATE(
        COUNTX( 
            VALUES('Table'[Project]),
            CALCULATE(
                COUNTROWS('Table'),
                'Table'[Task Status] = "Delayed",
                REMOVEFILTERS('Table'[Task])
            )
        ),
    REMOVEFILTERS('Table'[Project])
    )
)
var inProgressOnes = 
COUNTX(
    VALUES('Table'[Project Group]),
    CALCULATE(
        COUNTX( 
            VALUES('Table'[Project]),
            CALCULATE(
                COUNTROWS('Table'),
                'Table'[Task Status] = "In Progress",
                REMOVEFILTERS('Table'[Task])
            )
        ),
    REMOVEFILTERS('Table'[Project])
    )
)
var completeGreenOnes = 
COUNTX(
    VALUES('Table'[Project Group]),
    CALCULATE(
        COUNTX( 
            VALUES('Table'[Project]),
            CALCULATE(
                COUNTROWS('Table'),
                'Table'[Task Status] = "Complete",
                REMOVEFILTERS('Table'[Task])
            )
        ),
    REMOVEFILTERS('Table'[Project])
    )
)
var taskLevelCheck = 
SWITCH(
    TRUE(),
    isTaskLevel && currentStatus = "Delayed", "red",
    isTaskLevel && currentStatus = "In Progress", "yellow",
    isTaskLevel && currentStatus = "Complete", "green"
)

var idk = SWITCH( TRUE(),
completeGreenOnes > 0 && ISBLANK(delayedRedOnes) && ISBLANK(inProgressOnes), "green",
delayedRedOnes > 0 ,"red",
isTaskLevel, taskLevelCheck,
"yellow"
)

return idk

vojtechsima_0-1750095855641.png

 

View solution in original post

5 REPLIES 5
speedramps
Super User
Super User

Yes, this solution drills up and down

 

Please click the thumbs up because I have tried to help.
Then click accept solution if it works.

Project group colour = 
var mylist = 
    CALCULATETABLE(
        VALUES(yourdata[Status]),
        ALLEXCEPT(yourdata,yourdata[Project Group]),
        yourdata[Status] <> "Complete"
    )
RETURN
IF (COUNTROWS(mylist) > 0, "Red", "Green")

 

speedramps_0-1750154865241.png

 

vojtechsima
Super User
Super User

Hey @fahadkhan 


TEst this one, bit lengthy tho:

coloring = 
var currentProject = SELECTEDVALUE('Table'[Project])
var currentStatus = SELECTEDVALUE('Table'[Task Status])
var isTaskLevel = HASONEVALUE('Table'[Task])

var delayedRedOnes = 
COUNTX(
    VALUES('Table'[Project Group]),
    CALCULATE(
        COUNTX( 
            VALUES('Table'[Project]),
            CALCULATE(
                COUNTROWS('Table'),
                'Table'[Task Status] = "Delayed",
                REMOVEFILTERS('Table'[Task])
            )
        ),
    REMOVEFILTERS('Table'[Project])
    )
)
var inProgressOnes = 
COUNTX(
    VALUES('Table'[Project Group]),
    CALCULATE(
        COUNTX( 
            VALUES('Table'[Project]),
            CALCULATE(
                COUNTROWS('Table'),
                'Table'[Task Status] = "In Progress",
                REMOVEFILTERS('Table'[Task])
            )
        ),
    REMOVEFILTERS('Table'[Project])
    )
)
var completeGreenOnes = 
COUNTX(
    VALUES('Table'[Project Group]),
    CALCULATE(
        COUNTX( 
            VALUES('Table'[Project]),
            CALCULATE(
                COUNTROWS('Table'),
                'Table'[Task Status] = "Complete",
                REMOVEFILTERS('Table'[Task])
            )
        ),
    REMOVEFILTERS('Table'[Project])
    )
)
var taskLevelCheck = 
SWITCH(
    TRUE(),
    isTaskLevel && currentStatus = "Delayed", "red",
    isTaskLevel && currentStatus = "In Progress", "yellow",
    isTaskLevel && currentStatus = "Complete", "green"
)

var idk = SWITCH( TRUE(),
completeGreenOnes > 0 && ISBLANK(delayedRedOnes) && ISBLANK(inProgressOnes), "green",
delayedRedOnes > 0 ,"red",
isTaskLevel, taskLevelCheck,
"yellow"
)

return idk

vojtechsima_0-1750095855641.png

 

does it work on drill up and drill down? for example if drill up to see the project group level in a matrix visual will it show the correct number/code?

 

I think so @fahadkhan 

I am attaching the file, you can see

speedramps
Super User
Super User

Create a measure like this

Please click thumbs up because I have tried to help.

Then click [accept solution] if it works

Project group colour = 
var mylist = 
    CALCULATETABLE(
        VALUES(yourdata[Status]),
        ALLEXCEPT(yourdata,yourdata[Project Group]),
        yourdata[Status] <> "Complete"
    )
RETURN
IF (COUNTROWS(mylist) > 0, "Red", "Green")

 

speedramps_0-1750092741989.png

 

Helpful resources

Announcements
August Power BI Update Carousel

Power BI Monthly Update - August 2025

Check out the August 2025 Power BI update to learn about new features.

August 2025 community update carousel

Fabric Community Update - August 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors