NOT DAX Operator
NOT inverts the state of a boolean expression, transforming FALSE to TRUE, or TRUE to FALSE.
NOT is an operator and not a function. Because of the precedence rules, the expression that follows NOT might be evaluated in an unexpected way if you think that NOT is a function.
EVALUATE
{
-- NOT evaluates the result of the multiplication
( "NOT ( FALSE ) * FALSE", "" & NOT ( FALSE ) * FALSE ),
-- NOT evaluates the result of the multiplication
( "NOT ( FALSE * FALSE )", "" & NOT ( FALSE * FALSE ) ),
-- NOT evaluates only the first FALSE function
( "( NOT FALSE ) * FALSE", "" & ( NOT FALSE ) * FALSE )
}
| Value1 | Value2 |
|---|---|
| NOT ( FALSE ) * FALSE | TRUE |
| NOT ( FALSE * FALSE ) | TRUE |
| ( NOT FALSE ) * FALSE | 0 |
The following example has the purpose of clarifying that NOT is an operator and not a function.
DEFINE
TABLE 'NOT IN' =
ADDCOLUMNS (
CROSSJOIN (
{ FALSE, TRUE },
SELECTCOLUMNS ( { 0, 1, 2 }, "Expression #", [Value] ),
SELECTCOLUMNS (
{ ( FALSE, FALSE ), ( FALSE, TRUE ), ( TRUE, TRUE ) },
"List Item 1", [Value1],
"List Item 2", [Value2]
)
),
"Expression",
SWITCH (
[Expression #],
0, "NOT ( " & [Value] & " ) IN …",
1, "NOT ( " & [Value] & " IN … )",
2, "( NOT " & [Value] & " ) IN …"
),
"Result",
SWITCH (
[Expression #],
0, NOT ( [Value] ) IN { [List Item 1], [List Item 2] },
1, NOT ( [Value] IN { [List Item 1], [List Item 2] } ),
2, ( NOT [Value] ) IN { [List Item 1], [List Item 2] }
)
)
EVALUATE
SELECTCOLUMNS (
VALUES ( 'NOT IN'[Expression] ),
"Expression", 'NOT IN'[Expression],
"…{ FALSE, FALSE }",
CALCULATE (
VALUES ( 'NOT IN'[Result] ),
'NOT IN'[List Item 1] = FALSE,
'NOT IN'[List Item 2] = FALSE
),
"…{ TRUE, TRUE }",
CALCULATE (
VALUES ( 'NOT IN'[Result] ),
'NOT IN'[List Item 1] = TRUE,
'NOT IN'[List Item 2] = TRUE
),
"…{ FALSE, TRUE }",
CALCULATE (
VALUES ( 'NOT IN'[Result] ),
'NOT IN'[List Item 1] = FALSE,
'NOT IN'[List Item 2] = TRUE
)
)
ORDER BY […{ FALSE, FALSE }] ASC
| Expression | …{ FALSE, FALSE } | …{ TRUE, TRUE } | …{ FALSE, TRUE } |
|---|---|---|---|
| NOT ( FALSE ) IN … | false | true | false |
| NOT ( FALSE IN … ) | false | true | false |
| ( NOT FALSE ) IN … | false | true | true |
| NOT ( TRUE ) IN … | true | false | false |
| NOT ( TRUE IN … ) | true | false | false |
| ( NOT TRUE ) IN … | true | false | true |
Last update: Jan 31, 2023 » Contribute » Show contributors
Contributors: Alberto Ferrari, Marco Russo, Kenneth Barber, Martin de la Herran
