Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
In my simple table, I have 3 columns:
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?
Solved! Go to Solution.
@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
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.
Can you also check if this formula with SUMX works?
All Except Store = SUMX(ALLEXCEPT(Table1;Table1[Store]); CALCULATE(SUM(Table1[Sales])))
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.
@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
@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
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
114 | |
99 | |
83 | |
70 | |
60 |
User | Count |
---|---|
150 | |
115 | |
104 | |
89 | |
65 |