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

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Learn more

Reply
genaussie
Frequent Visitor

Best Practice for Max Calculation with a Condition

Hi All,

 

The current formula is relatively simple and works to return the latest Office for the Project based on the Period, but it involves using both LOOKUPVALUE and MAX. I'm wondering if there is a cleaner way that is considered best (or better) practice:

 

Formula =
    LOOKUPVALUE('List'[Office],
        'List'[Project], 'List'[Project],
        'List'[Period], CALCULATE(MAX('List'[Period]), ALLEXCEPT('List', 'List'[Project])))

Thanks in advance for any insight.
1 ACCEPTED SOLUTION
danextian
Super User
Super User

Hi @genaussie 

Try this:

CalcColumn =
VAR MaxPeriodByProject =
    CALCULATE ( MAX ( 'List'[Period] ), ALLEXCEPT ( 'List', 'List'[Project] ) )
RETURN
    CALCULATE (
        MAX ( 'List'[Office] ),
        FILTER (
            ALL ( 'List' ),
            'List'[Period] = MaxPeriodByProject
                && 'List'[Project] = EARLIER ( 'List'[Project] )
        )
    )




Dane Belarmino | Microsoft MVP | Proud to be a Super User!

Did I answer your question? Mark my post as a solution!


"Tell me and I’ll forget; show me and I may remember; involve me and I’ll understand."
Need Power BI consultation, get in touch with me on LinkedIn or hire me on UpWork.
Learn with me on YouTube @DAXJutsu or follow my page on Facebook @DAXJutsuPBI.

View solution in original post

4 REPLIES 4
danextian
Super User
Super User

Hi @genaussie 

Try this:

CalcColumn =
VAR MaxPeriodByProject =
    CALCULATE ( MAX ( 'List'[Period] ), ALLEXCEPT ( 'List', 'List'[Project] ) )
RETURN
    CALCULATE (
        MAX ( 'List'[Office] ),
        FILTER (
            ALL ( 'List' ),
            'List'[Period] = MaxPeriodByProject
                && 'List'[Project] = EARLIER ( 'List'[Project] )
        )
    )




Dane Belarmino | Microsoft MVP | Proud to be a Super User!

Did I answer your question? Mark my post as a solution!


"Tell me and I’ll forget; show me and I may remember; involve me and I’ll understand."
Need Power BI consultation, get in touch with me on LinkedIn or hire me on UpWork.
Learn with me on YouTube @DAXJutsu or follow my page on Facebook @DAXJutsuPBI.

Hi @danextian confirming this works. It is useful to have alternative solutions 🙂

Another option is to utilise 2x VAR:

VAR MaxPeriodByProject = CALCULATE ( MAX ( 'List'[Period] ), ALLEXCEPT ( 'List', 'List'[Project] ) )

VAR CurrentProject = 'List'[Project]

RETURN

    CALCULATE (

        MAX ( 'List'[Office] ),

        FILTER (

            ALL ( 'List' ),

            'List'[Period] = MaxPeriodByProject

                && 'List'[Project] = CurrentProject )

        )

elitesmitpatel
Super User
Super User

Try this

LatestOfficeByPeriod =
VAR CurrentProject = SELECTEDVALUE('List'[Project]) -- Get the currently selected project
RETURN
LOOKUPVALUE(
'List'[Office],
'List'[Project], CurrentProject,
'List'[Period], EARLIER('List'[Period])
)

Hi, I don't think this works as I get the error message, "EARLER/EARLIEST refers to an earlier row context which doesn't exist."

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

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

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Solution Authors