{<Field+={x}>} / {<Field-={x}>} / {<Field*={x}>}
Set modifier operators: =, +=, -=, *= in Power BI
Qlik set modifiers can replace, extend, reduce or intersect the user's selection in a field. Here is how each assignment operator maps to DAX, using KEEPFILTERS, TREATAS and UNION.
What it does in Qlik
Inside a modifier, the assignment operator decides how the listed values combine with the current selection in that field:
Region={'North'}: replace the selection with North.Region+={'North'}: current selection plus North.Region-={'North'}: current selection minus North.Region*={'North'}: only North, and only if it is in the current selection.
Qlik example
Sum({<Region-={'North'}>} Sales) // everything selected except North
Sum({<Region*={'North'}>} Sales) // North only if North is selected/possible
Sum({<Region+={'North'}>} Sales) // the selection plus NorthPower BI equivalent
*= (intersect): KEEPFILTERS
KEEPFILTERS intersects the new filter with the existing one instead of replacing it.
Sales North if selected =
CALCULATE ( [Sales], KEEPFILTERS ( Customer[Region] = "North" ) )-= (exclude)
Sales excl North =
CALCULATE (
[Sales],
KEEPFILTERS ( Customer[Region] <> "North" && NOT ISBLANK ( Customer[Region] ) )
)The NOT ISBLANK part copies Qlik's behaviour: a selection in Region can never include records where Region is null. Remove it if you want blank regions included.
+= (union with the selection)
DAX has no += shortcut. Build the set of values explicitly. TREATAS is needed because a UNION with a table constructor loses the column lineage.
Sales selection plus North =
CALCULATE (
[Sales],
TREATAS ( UNION ( VALUES ( Customer[Region] ), { "North" } ), Customer[Region] )
)Gotchas and behaviour differences
VALUES(Customer[Region])returns the values that are *visible* in the current filter context. That is closer to Qlik's possible values than to the values the user explicitly clicked, so cross-filtering from other slicers changes the result.- Plain
Customer[Region] <> "North"withoutKEEPFILTERSreplaces the Region filter. That gives you{<Region={"*"}-{'North'}>}(all regions except North), not "my selection minus North". - In a visual grouped by Region,
KEEPFILTERSalso intersects with the row's own Region. Without it, every row would show the same number.
Official documentation
- Set modifiers with implicit set operators (Qlik Help)
- Set modifiers (Qlik Help)
- KEEPFILTERS function (DAX) (Microsoft Learn)
- TREATAS function (DAX) (Microsoft Learn)
- KEEPFILTERS (dax.guide)
Related pages
Sum({<Field={value}>} Sales)
Set Analysis basics
How a basic Qlik set expression such as Sum({<Year={2024}>} Sales) maps to CALCULATE with filter arguments in DAX, and where the two engines behave differently.
Direct equivalent
{<Year={2023}+{2024}>} / {1-$}
Set operators: + - * / between sets and value lists
Qlik set operators (union +, exclusion -, intersection *, symmetric difference /) work on value lists inside a modifier and on whole record sets. Value-list operations map cleanly to DAX. Record-set operations usually do not.
Partial / different approach
Sum({1} Sales) / Sum({<Region=>} Sales)
Ignoring selections: {1}, Field= and {1<...>}
How to translate Qlik's {1} set identifier and empty field modifiers (Region=) into REMOVEFILTERS, ALL and ALLSELECTED. Includes the important difference in how chart dimensions are treated.
Partial / different approach
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.