KB 100505
Filtered table as filter argument (multiple columns predicate with OR condition)
A FILTER function filtering entire table using an OR condition on multiple columns is used as a filter argument in functions such as CALCULATE, CALCULATETABLE, etc.
Remarks
Because the conditions are applied with an || operator, the multiple columns predicate must be kept in a single filter argument, without filtering an entire table.
In order to keep the same semantics as the original filter, apply KEEPFILTERS over the filter argument.
Recommended articles:
Example
Remove the Customer iterator and use KEEPFILTERS around the predicate to maintain the same semantics, so the filter is applied only to the Customer[Country] and Customer[Age] columns instead of filtering the entire Customer table.
Original code
CALCULATE (
[Sales Amount],
FILTER (
Customer,
Customer[Country] = "Canada"
|| Customer[Age] >= 21
)
)
Possible optimization
CALCULATE (
[Sales Amount],
KEEPFILTERS (
Customer[Country] = "Canada"
|| Customer[Age] >= 21
)
)