Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Hi everyone, I want to display the revenue of each product where its productID is greater than 10. I have a Dax formula as bellow:
Revenue of productID greater than 10 := CALCULATE(Sales[Sum revenue],'Product'[ProductID]>10))
This return a table that is not as expected because the revenue is the same with all productIDs:
When I modify the Dax to:
Revenue of productID greater than 10 =
Var productIDContext = VALUES('Product'[ProductID])
return CALCULATE(Sales[Sum revenue],'Product'[ProductID]>10,productIDContext)
It returns the result as expected
In conclusion, I want to what variable productIDContext is really doing in this Dax formulae, it seems that the filter: 'Product'[ProductID]>10 has overwritten the filter context of productID outside the calculation function so we need productIDContext to regain it, but I still could not understand exactly the under the mechanism of Dax to merge the initial filter context of productID outside the Calculate function and 2 filter parameters inside the Calculate function. Can someones please explain this to me? Sorry for my bad english.
Solved! Go to Solution.
Hi,
When you write
CALCULATE(
[Sum revenue],
'Product'[ProductID]>10
)
DAX actually goes away and does this:
CALCULATE(
[Sum revenue],
FILTER(
ALL('Product'[ProductID]),
'Product'[ProductId] > 10
)
)
eg it removes any existing filters on product id (eg the ones coming from the matrix rows and then it adds a new filter to just get ids greater than 10.
In the measure that is working it does the same but VALUES('Product'[ProductId]) add back the existing Product Ids that were in the filter context to start with.
Thanks for you your support
Hi,
When you write
CALCULATE(
[Sum revenue],
'Product'[ProductID]>10
)
DAX actually goes away and does this:
CALCULATE(
[Sum revenue],
FILTER(
ALL('Product'[ProductID]),
'Product'[ProductId] > 10
)
)
eg it removes any existing filters on product id (eg the ones coming from the matrix rows and then it adds a new filter to just get ids greater than 10.
In the measure that is working it does the same but VALUES('Product'[ProductId]) add back the existing Product Ids that were in the filter context to start with.
@bcdobbs is correct. VALUES is restoring the local ProductId filter context that CALCULATE replaces.
I just wanted to suggest using KEEPFILTERS in your measure like this rather than VALUES:
CALCULATE (
Sales[Sum revenue],
KEEPFILTERS ( 'Product'[ProductID] > 10 )
)
Check out the July 2025 Power BI update to learn about new features.
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
User | Count |
---|---|
20 | |
7 | |
6 | |
5 | |
5 |
User | Count |
---|---|
24 | |
10 | |
10 | |
9 | |
6 |