Forum Discussion
Enan
3 years agoHelper I
Difference Between Calculate & Filter
Hi Experts,
Need your guidance to understand the behaviour of Filter & Calculate.
I have used below DAX measures to calcualte total Transactions based where quantity =6 and for Jan97.
However when i use the slicer and slect quantity less than 06 it gives blank value for PINK text box (Filter DAX used) but when i nothing changes in Blue Text Box (Calcualte use).
Can you please guide me how it is working.
Below images and DAX are for your inforamtion:
No Slicer SelectedSlicer Value Selected
Total Transaction Jan97 & Qty equals 6 using Filter = CALCULATE(COUNTROWS(
FILTER(Transactions_Data_Fact,Transactions_Data_Fact[quantity]=6 &&
Transactions_Data_Fact[year]=1997 &&
Transactions_Data_Fact[Month] =1)))
Total Transaction Jan97 & Qty equals 6 using Calculate = CALCULATE(COUNTROWS(Transactions_Data_Fact),
Transactions_Data_Fact[quantity]=6,
Transactions_Data_Fact[year]=1997,
Transactions_Data_Fact[Month]=1)
Refer to this sqlbi article: https://www.sqlbi.com/articles/filter-arguments-in-calculate/
To directly try to answer your question, filters statements in CALCULATE that don't explicitly use FILTER are implicitly using FILTER( ALL( Table[Column] ), <condition> ). I.e. your 'using Calculate' version is equivalent to:
= CALCULATE( COUNTROWS( Transactions_Data_Fact ), FILTER( ALL( Transactions_Data_Fact[quantity] ), Transactions_Data_Fact[quantity] = 6 ), FILTER( ALL( Transactions_Data_Fact[year] ), Transactions_Data_Fact[year] = 1997 ), FILTER( ALL( Transactions_Data_Fact[Month] ), Transactions_Data_Fact[Month] = 1 ) )
1 Reply
- MarkLafSuper User
Refer to this sqlbi article: https://www.sqlbi.com/articles/filter-arguments-in-calculate/
To directly try to answer your question, filters statements in CALCULATE that don't explicitly use FILTER are implicitly using FILTER( ALL( Table[Column] ), <condition> ). I.e. your 'using Calculate' version is equivalent to:
= CALCULATE( COUNTROWS( Transactions_Data_Fact ), FILTER( ALL( Transactions_Data_Fact[quantity] ), Transactions_Data_Fact[quantity] = 6 ), FILTER( ALL( Transactions_Data_Fact[year] ), Transactions_Data_Fact[year] = 1997 ), FILTER( ALL( Transactions_Data_Fact[Month] ), Transactions_Data_Fact[Month] = 1 ) )