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
MJEnnis
Helper V
Helper V

Filtering by max value within calculated table

I have a calculated table that works something like this:

 

Var TAB1 = SELECTCOLUMNS(...

Var TAB2 = ADDCOLUMNS(...

RETURN TAB2

 

The resulting table is something like this:

 

ID...LEVEL1LEVEL2LEVEL3
1890...608
4567...046
4567...569

 

I need to filter out the the lower summed level rows for each duplicated ID. (Never more than two occurences of each ID. And only 20 duplicates in a table with over 23000 rows. But I urgently need to remove these duplicated entries.)

 

The easiest solution to me seems to be to create a LEVEL_SUM column and then to filter out the rows where the the sum does not equal the max value for each ID. 

 

This of course works fine: 

 

Var TAB3 = ADDCOLUMNS(TAB2, "LEVEL_SUM", [LEVEL 1] + [LEVEL 2] + [LEVEL 3])

 

However, since this is all within the same code for a calculated table, the following will not work:

 

Var TEMPID = [ID]     # <= PROBLEM IS HERE! This is not yet a column, but a column expression.

 

As a result, none of the rest will work:

 

Var TAB4 = ADDCOLUMNS(TAB3, "MAX_LEVEL", Maxx(FILTER(TAB3, [ID] = TEMPID), [LEVEL_SUM]))

 

Var TAB5 = FILTER(TAB4, [MAX_LEVEL] = [LEVEL_SUM])

 

RETURN TAB5

 

Does anyone have any crafty tips to do this without creating a separate calculated table and without Power Query? This would probably work as a calculated column instead, but the problem is that I have to "wrangle" the data a lot more after I filter these rows out.

 

1 ACCEPTED SOLUTION
AlexisOlson
Super User
Super User

I think something like this should work:

CalculatedTable =
VAR TAB1 = SELECTCOLUMNS ( [...] )
VAR TAB2 = ADDCOLUMNS ( TAB1, [...] )
VAR TAB3 = ADDCOLUMNS ( TAB2, "LEVEL_SUM", [LEVEL 1] + [LEVEL 2] + [LEVEL 3] )
RETURN
    FILTER (
        TAB3,
        [LEVEL_SUM]
            = MAXX ( FILTER ( TAB3, [ID] = EARLIER ( [ID] ) ), [LEVEL_SUM] )
    )

But I haven't checked it against anything

View solution in original post

4 REPLIES 4
AlexisOlson
Super User
Super User

I think something like this should work:

CalculatedTable =
VAR TAB1 = SELECTCOLUMNS ( [...] )
VAR TAB2 = ADDCOLUMNS ( TAB1, [...] )
VAR TAB3 = ADDCOLUMNS ( TAB2, "LEVEL_SUM", [LEVEL 1] + [LEVEL 2] + [LEVEL 3] )
RETURN
    FILTER (
        TAB3,
        [LEVEL_SUM]
            = MAXX ( FILTER ( TAB3, [ID] = EARLIER ( [ID] ) ), [LEVEL_SUM] )
    )

But I haven't checked it against anything

Works like a charm! Thanks!

 

I just added it as a new variable, instead of as a filter on the resulting table, as I still have some more steps to take before the table is ready. 

MJEnnis
Helper V
Helper V

No takers? Is it not possible? Do I have to do a calculated column and then create a new calculated table applying the desired filter?

This works perfectly as a calculated column: 

 

Max Levels =

 

Var TEMPID = [ID]

 

Var MAX_LEVELS = Maxx(FILTER(TAB3, [ID] = TEMPID), [LEVEL_SUM])

 

RETURN MAX_LEVELS

 

But then I have to create a new calculated table that filters for Level Sum = Max Level. I already have more tables than I can manage in my model.

 

Where are the real gurus today?

 

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.