{<Product={"Bike*"}>} / {<Customer={"=Sum(Sales)>10000"}>}

Searches in set modifiers (wildcards, >, aggregated conditions) in Power BI

How Qlik searches inside set modifiers (numeric ranges, wildcards and expression searches such as "=Sum(Sales)>10000") translate to DAX filters, and why the expression search needs ALLSELECTED to match.

Partial / different approach DAX

Short answer: Numeric and wildcard searches become boolean or FILTER conditions on a column. An expression search becomes FILTER(VALUES(Customer[Key]), [Sales] > 10000), but Qlik evaluates it once per chart, so wrap it in ALLSELECTED to get the same numbers.

What it does in Qlik

A search string in double quotes selects every value of the field that matches. It can be a wildcard ("Bike*"), a numeric comparison (">1000"), or an expression search ("=Sum(Sales)>10000"). An expression search evaluates the expression for each field value and keeps the values where it is true.

Text searches are not case-sensitive.

Qlik example

Qlik chart expressions
Sum({<Amount={">1000"}>} Sales)
Sum({<Product={"Bike*"}>} Sales)
Sum({<Customer={"=Sum(Sales)>10000"}>} Sales)

Power BI equivalent

Numeric and wildcard conditions

DAX
Sales big lines =
CALCULATE ( [Sales], Sales[Amount] > 1000 )

Sales bikes =
CALCULATE (
    [Sales],
    FILTER ( ALL ( Product[Name] ), LEFT ( Product[Name], 4 ) = "Bike" )
)

DAX text comparison with = is case-insensitive, like Qlik search. For "contains", use CONTAINSSTRING(Product[Name], "bike").

Expression search, the Qlik way

Qlik decides which customers qualify once for the whole chart, using the current selections. To get the same result in a visual grouped by, say, Year, compute the qualifying list under ALLSELECTED() and intersect it with the row.

DAX
Sales of big customers =
VAR Qualifying =
    CALCULATETABLE (
        FILTER ( VALUES ( Customer[CustomerKey] ), [Sales] > 10000 ),
        ALLSELECTED ()
    )
RETURN
    CALCULATE ( [Sales], KEEPFILTERS ( Qualifying ) )

The shorter CALCULATE([Sales], FILTER(VALUES(Customer[CustomerKey]), [Sales] > 10000)) re-tests the threshold inside every cell. In a visual by Year, that means "customers above 10,000 *in that year*". That may be what you want, but it is not what Qlik computes.

Gotchas and behaviour differences

  • Qlik's "Bike*" is anchored (it means "starts with"). DAX SEARCH("Bike*", ...) supports wildcards but finds matches anywhere in the text, so test the position or use LEFT.
  • A numeric search such as ">1000" on a field compares the field's distinct values, not individual rows. On a fact column like Amount, that is the same as a row filter.
  • FILTER over a whole fact table is slow. Filter a single column (ALL(Product[Name]), VALUES(Customer[CustomerKey])) instead.

Official documentation

Related pages

Spotted an error or a better pattern? QlikToDax is maintained by a working BI consultant; corrections are welcome via the About page. Last reviewed 2026-10-25.