Uso de operadores DAX
Las fórmulas DAX pueden usar operadores DAX para crear expresiones con las que hacer cálculos aritméticos, comparar valores, trabajar con cadenas o probar condiciones.
Sugerencia
Tanto el orden de prioridad como muchos de los operadores DAX son los mismos que los que se encuentran en Excel.
Operadores aritméticos
La siguiente tabla enumera los operadores aritméticos.
Operador | Descripción |
---|---|
+ | Suma |
- | Resta |
* | Multiplicación |
/ | División |
^ | Exponenciación |
Recuerde que, cuando está dividiendo dos expresiones y el denominador puede devolver cero o BLANK, es más eficaz y seguro usar la función DAX DIVIDE
.
Operadores de comparación
En la siguiente tabla, se enumeran los operadores de comparación, que se utilizan para comparar dos valores. El resultado es TRUE o FALSE.
Operador | Descripción |
---|---|
= | Igual a |
== | Estrictamente igual a |
> | Mayor que |
< | Menor que |
>= | Mayor a o igual a |
<= | Menor o igual que |
<> | No es igual a |
Todos los operadores de comparación, excepto Estrictamente igual a (==), consideran BLANK como igual al número cero, una cadena vacía (""), la fecha 30 de diciembre de 1899 o FALSE. Esto significa que la expresión [Revenue] = 0
será TRUE cuando el valor de [Revenue]
sea cero o BLANK. Por el contrario, [Revenue] == 0
será TRUE solo cuando el valor de [Revenue]
sea cero.
Operador de concatenación de texto
Use el carácter de Y comercial (&) para conectar, o concatenar, dos valores de texto y generar un valor de texto continuo. Pongamos como ejemplo la siguiente definición de columna calculada:
Model Color = 'Product'[Model] & "-" & 'Product'[Color]
Operadores lógicos
Use operadores lógicos para combinar expresiones y generar un solo resultado. En la siguiente tabla se presentan todos los operadores lógicos.
Operador | Descripción |
---|---|
&& | Crea una condición AND entre dos expresiones y cada una tiene un resultado booleano. Si ambas expresiones devuelven TRUE, la combinación de las expresiones también devuelve TRUE; de lo contrario, la combinación devuelve FALSE. |
|| (doble barra) | Crea una condición OR entre dos expresiones lógicas. Si cualquiera de las expresiones devuelve TRUE, el resultado es TRUE; solo cuando ambas expresiones son FALSE el resultado es FALSE. |
IN | Crea una condición lógica OR entre cada fila que se está comparando con una tabla. Nota: La sintaxis del constructor de la tabla usa llaves. |
NOT | Invierte el estado de una expresión booleana (FALSE a TRUE y viceversa). |
Un ejemplo que usa el operador lógico IN
es la definición de la medida ANZ Revenue, que usa la función DAX CALCULATE
para aplicar un filtro específico de dos países o regiones: Australia y Nueva Zelanda.
Nota
Descubrirá todo el potencial de la función CALCULATE
cuando aprenda a modificar el contexto de filtro.
ANZ Revenue =
CALCULATE(
[Revenue],
Customer[Country-Region] IN {
"Australia",
"New Zealand"
}
)
Prioridad de operadores
Cuando la fórmula DAX incluye varios operadores, DAX usa reglas para determinar el orden de evaluación, lo que se conoce como la prioridad de operadores. Las operaciones se ordenan de acuerdo con la siguiente tabla:
Operador | Descripción |
---|---|
^ | Exponenciación |
- | Signo (como -1) |
* y / | Multiplicación y división |
NOT | NOT |
+ y - | Suma y resta |
& | Concatenación de dos cadenas de texto |
=,==,<,>,<=,>=,<> | Comparación |
Cuando los operadores tienen el mismo valor de prioridad, se ordenan de izquierda a derecha.
En general, la prioridad de los operadores es la misma que la que se encuentra en Excel. Si necesita invalidar el orden de evaluación, agrupe las operaciones entre paréntesis.
Pongamos como ejemplo la siguiente definición de columna calculada:
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]
Esta definición de columna calculada de ejemplo genera un resultado incorrecto porque la multiplicación ocurre antes que la resta. La siguiente definición de columna calculada correcta utiliza paréntesis para asegurarse de que las restas se ejecuten antes que las multiplicaciones.
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])
Sugerencia
Recordar las reglas de prioridad de los operadores puede ser complicado, sobre todo para quien no tiene mucha experiencia con DAX. Por lo tanto, es recomendable probar las fórmulas minuciosamente. Cuando las fórmulas no generan el resultado correcto debido a un orden incorrecto de evaluación, puede añadir paréntesis para ajustar el orden de evaluación. También puede añadir paréntesis para mejorar la legibilidad de las fórmulas.
Para obtener más información sobre los operadores de DAX y el orden de prioridad, consulte Operadores DAX.
Conversión implícita
Al escribir una fórmula DAX que usa operadores para combinar diferentes tipos de datos, no es necesario convertir explícitamente los tipos. Normalmente, DAX identifica automáticamente los tipos de datos de los objetos de modelo a los que se hace referencia y realiza las conversiones implícitas cuando es necesario para completar la operación especificada.
Sin embargo, puede haber algunas limitaciones en los valores que se pueden convertir correctamente. Si un valor o una columna tiene un tipo de datos incompatible con la operación actual, DAX devuelve un error. Por ejemplo, el intento de multiplicar un valor de fecha creará un error porque no es una operación lógica.
BLANK se gestiona de manera diferente, según el operador que se utilice. Se controla de forma similar al modo en que Excel trata BLANK, pero de forma diferente al modo en que las bases de datos (SQL) tratan los valores NULL. BLANK se trata como cero cuando actúa sobre operadores aritméticos y como una cadena vacía cuando se concatena a una cadena.
Sugerencia
No es fácil acordarse de cómo gestionar BLANK, sobre todo para quienes no tienen mucha experiencia en DAX. Por lo tanto, es recomendable probar las fórmulas minuciosamente. Cuando los BLANK generan resultados inesperados, puede usar las funciones DAX IF
e ISBLANK
para revisar los BLANK y, luego, actuar de la manera adecuada.