Knowledge Base
Open App
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 
    )
)