cancel
Showing results for
Did you mean:

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Impactful Individual

DAX ALLEXCEPT: How to remove all filters but one?

In my simple table, I have 3 columns:

• Date
• Sales
• Store

These are the numbers:

I want to calculate the sales for all the years for each store:

`All Except Store = SUMX(ALLEXCEPT(Table1;Table1[Store]);Table1[Sales])`

This is returning the following:

It's nonsense! It's removing ALL the filters, so to calculate the sales for all the years and KEEP the filters on the store using ALLEXCEPT I can use:

`All Except Store2 = CALCULATE(SUM(Table1[Sales]); ALLEXCEPT(Table1;Table1[Store]))`

This one works.

But why doesn't it work with SUMX?

1 ACCEPTED SOLUTION
Microsoft Employee

@webportal,

I got response from PG:

AllExcept behaves differently when used as a set filter in Calculate or when used to return a table. In the former case, all filters removed except for the filters on the specified columns.

SUMX(ALLEXCEPT(Table1;Table1[Store]);Table1[Sales]) means return a table of all rows in Table1. The returned table has all columns in Table1 except the [Store] column. Afterwards, calculate the sum by iterating over the returned table.

Regards,
Lydia

Community Support Team _ Lydia Zhang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
8 REPLIES 8
Community Champion

@webportal

Also you need pay a good attention on Calculate function.

The CALCULATE function changes the context in which the data is filtered, and evaluates the expression in the new context that you specify. For each column used in a filter argument, any existing filters on that column are removed, and the filter used in the filter argument is applied instead.

Community Champion

@webportal

Can you also check if this formula with SUMX works?

`All Except Store = SUMX(ALLEXCEPT(Table1;Table1[Store]); CALCULATE(SUM(Table1[Sales])))`

Impactful Individual

Yep, that one works too. CALCULATE has magical powers!

Here's the link to the pbix.

Thanks

Super User

@webportal

You are using the ALLEXCEPT in an unusual manner.

Create a new table to see what the result of ALLEXCEPT(Table1;Table1[Store]) is. I think that will clarify what is going on.

Microsoft Employee

@webportal,

I got response from PG:

AllExcept behaves differently when used as a set filter in Calculate or when used to return a table. In the former case, all filters removed except for the filters on the specified columns.

SUMX(ALLEXCEPT(Table1;Table1[Store]);Table1[Sales]) means return a table of all rows in Table1. The returned table has all columns in Table1 except the [Store] column. Afterwards, calculate the sum by iterating over the returned table.

Regards,
Lydia

Community Support Team _ Lydia Zhang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Microsoft Employee

@webportal,

I will consult this issue internally. And you can use the dax below instead.

`Measure 2 = SUMX(FILTER(ALL(Table1);Table1[Store] =MAX(Table1[Store]));Table1[Sales])`

Regards,
Lydia

Community Support Team _ Lydia Zhang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Impactful Individual
Ok, thanks a lot.
Super User

Can you share the pbix?