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

Join us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.

Reply
Richard77
Resolver I
Resolver I

Nested if statements in matrix

Dear community,

I am hopin you will be able to help me on this matrix visualisation I am trying to create, but I am stuck.

 

I have 3 tables:

A standard date table

A table with service data (start date, organisation ID), simplified example data:

servicestart_dateorganisation_id
1072808/10/20185
1082017/11/20182
1082017/11/20185
1094020/01/20192199
1094020/01/20192200
1094020/01/20192201
1094020/01/20192202
1094020/01/20192203
1109817/03/20193583

A table with staff data (Organisation ID, number of staff, year a baseline year (static per organisation) and a date being always 01-01-[year]), simplified example data (ID 3085 thus has no baseline data):

organisation_idstaffyearDateBaseline year

11587.0201701/01/20172019
11585.0201801/06/20182019
11588.0201901/01/20192019
11589.0202001/01/20202019
11589.0202101/01/20212019
115812.8202201/01/20222019
11580.0202301/01/20232019
30857.2201901/01/20192018
30859.0202001/01/20202018
308510.8202101/01/20212018
308511.4202201/01/20222018
30850.0202301/01/20232018

Now I want to create a matrix. In the rows I want 'Organisation ID', in the columns 'Year' and as values one of the following options:

- "n/a" for all columns if the applicable organisation has no baseline data (i.e. there is no row in 'staff data' where year equals baseline year.

- number of staff per organisation, per year

- "n/s" when the Organisation ID is not in the 'service' table, hence did not receive services in that year.

 

So far I have only managed to create a matrix that shows a combination of 2 of the expected values, but not 3.  This being my closest measure: 

SumStaffFilter =
IF (
    ISBLANK (
        CALCULATE (
            SUM ( 'staff'[number of staff] ),
            FILTER (
                'staff',
                'staff'[organisation_id]
                    IN VALUES ( 'service'[organisation_id] )
            )
        )
    ),
    "n/s",
    CALCULATE (
        SUM ( 'staff'[number of staff] ),
        FILTER (
            'staff',
            'staff'[organisation_id]
                IN VALUES ( 'service'[organisation_id] )
        )
    )
)
 
Any attempt to incorporate a measure that gives "n/a" for the whole row overwrites my 'number of staff' thus showing "n/a" instead of a number.
 
I woul really appreciate your help on this one. If there is any other information required I'm happy to oblige.
 
Cheers,
4 REPLIES 4
Richard77
Resolver I
Resolver I

Dear @Anonymous 

Thank you again for your efforts. Hereby a link to my OneDrive with a .pbix file where I included the (cleaned up) data + a mock up of the result.

Example data.pbix

 

Cheers,

Anonymous
Not applicable

Hi @Richard77 ,

Here some steps that I want to share, you can check them if they suitable for your requirement.

Here is my test data:

vheqmsft_0-1707703414944.png

 

vheqmsft_1-1707703426085.png

Create two measures

 

HasBaseline = 
IF(
    COUNTROWS(
        FILTER(
            'staff',
            'staff'[year] = 'staff'[Baseline year]
            && 'staff'[organisation_id] = MAX('staff'[organisation_id])
        )
    ) > 0,
    BLANK(),
    "n/a"
)
Sum_StaffFilter = 
VAR CurrentOrgID = MAX('staff'[organisation_id])
VAR OrgHasService = NOT(ISBLANK(SUM('service'[organisation_id])))
VAR OrgHasBaseline = [HasBaseline] = BLANK()
RETURN
IF(
    NOT(OrgHasBaseline),
    "n/a",
    IF(
        OrgHasService,
        CALCULATE(
            SUM('staff'[staff]),
            'staff'[organisation_id] = CurrentOrgID
        ),
        "n/s"
    )
)

 

Final output

vheqmsft_2-1707703589682.png

 

Best regards,

Albert He

 

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly



Dear @Anonymous ,

 

thank you so much for your help! The measures do not completely work, as a result I would like to create a matrix like below where the yearly values for ID = 308 would be "n/a" as this organisation does not have a baseline (I've marked the baseline year orange in the screenshot below).

Richard77_0-1707723089208.png

Using your measures this is the outcome (where it looks like the "n/a" overwrites the number of staff for each year (except for the baseline) and the "n/s".

Richard77_1-1707723706335.png

 

Cheers,

Anonymous
Not applicable

Hi @Richard77 ,
Please provide sample data that covers your issue or question completely, in a usable format (not as a screenshot).
Do not include sensitive information or anything not related to the issue or question.

 

Best regards,

Albert He

 

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

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

June 2025 community update carousel

Fabric Community Update - June 2025

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