Forum Discussion
DAX: Puzzling ALL behaviour in context transition
Hi there,
I have the following calculated columns in the 'Product' table of the Contoso data model (available here). 'Product'[ProductKey] has 2517 unique values.
A) ‘Product’[Test 1]=CALCULATE(ALL(’Product’[ProductKey])) yields the ProductKey per row.
B) ‘Product’[Test 2]=CALCULATE(COUNTROWS(ALL(’Product’[ProductKey]))) however yields 2517 in all rows (size of the 'Product' table)
I find it puzzling that the filter resulting from context transition does affect the result in ‘Product’[Test 1] but it doesn't in ‘Product’[Test 2]. Could someone explain what is going on?
Thanks very much
Hi AlB and MattAllington
I did email Jeffrey Wang about this issue recently and he confirmed it is a bug and that it will be fixed in a future release. I don't have a timeframe, unfortunately.
11 Replies
- v-danhe-msft
Microsoft Employee
Hi AlB,
The sample file you have offered could not be opened due to the license problems coudl you please just share some sample file to have a test?
And the formula you have offered in ‘Product’[Test 1]=CALCULATE(ALL(’Product’[ProductKey])) seemed wrong, if you want to use the CALCULATE function, you should have an Aggregate function in it, could you please modify your formula and test it again?
Regards,
Daniel He
- AlB
Community Champion
Hi v-danhe-msft
There is no error. Both 'Test 1' and 'Test 2' work as you can see in the attached file. I am just trying to understand why the interaction between context transition and ALL() seems to be different in 'Test 1' than in 'Test 2'
Thanks
- v-danhe-msft
Microsoft Employee
Hi AlB,
Based on my research, it is due to the simple useage of calculate funtion and the dax engine-The VertiPaq Engine in DAX, when you are using one parameter in calculate function, it takes the existing row contexts (if any) and transforms them into an equivalent filter context.
You could refer to below link:
https://powerpivotpro.com/2014/03/becoming-one-with-calculate/
https://www.microsoftpressstore.com/articles/article.aspx?p=2449192&seqNum=2
And you could refer to the Chapter 5 Understanding CALCULATE and CALCULATETABLE in the book
"The Definitive Guide to DAX: Business intelligence with Microsoft Excel, SQL Server Analysis Services, and Power BI"
Regards,
Daniel He