Uso de operadores de DAX

Completado

Las fórmulas de DAX pueden usar operadores para crear expresiones que pueden realizar cálculos aritméticos, comparar valores, trabajar con cadenas o probar condiciones.

Sugerencia

Muchos operadores de DAX y el orden de prioridad son los mismos que los que se encuentran en Excel.

Operadores aritméticos

En la tabla siguiente se enumeran los operadores aritméticos.

Operador Descripción
+ Suma
- Resta
* Multiplicación
/ División
^ Exponenciación

Recuerde que, cuando divide dos expresiones y cuando el denominador puede devolver cero o BLANK, es más eficaz y seguro usar la función DIVIDE de DAX.

Operadores de comparación

En la tabla siguiente 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 o igual que
<= Menor o igual que
<> No 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. Significa que la expresión [Revenue] = 0 será TRUE cuando el valor de [Revenue] sea cero o BLANK. En cambio, [Revenue] == 0 es TRUE solo cuando el valor de [Revenue] es cero.

Operador de concatenación de texto

Use el carácter de Y comercial (&) para conectar o concatenar dos valores de texto para generar un valor de texto continuo. Por ejemplo, considere la definición de columna calculada siguiente:

Model Color = 'Product'[Model] & "-" & 'Product'[Color]

Operadores lógicos

Use operadores lógicos para combinar expresiones para 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, donde 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 canalización) Crea una condición OR entre dos expresiones lógicas. Si alguna 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 en el que se usa el operador lógico IN es la definición de medida ANZ Revenue, que usa la función CALCULATE de DAX para aplicar un filtro específico de dos países: Australia y Nueva Zelanda.

Nota

Se le presentará la eficaz función CALCULATE cuando obtenga información sobre cómo modificar el contexto del filtro.

ANZ Revenue =
CALCULATE(
    [Revenue],
    Customer[Country-Region] IN {
        "Australia",
        "New Zealand"
    }
)

Prioridad de operadores

Cuando la fórmula de DAX incluye varios operadores, DAX usa reglas para determinar el orden de evaluación, lo que se conoce como prioridad de operadores. Las operaciones se ordenan en función de la tabla siguiente.

Operador Descripción
^ Exponenciación
- Signo (como en - 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.

Por ejemplo, considere la definición de columna calculada siguiente:

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 se produce antes que la resta. La siguiente definición de columna calculada correcta utiliza paréntesis para asegurarse de que las restas se ejecutan 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, especialmente para los principiantes de DAX. Por lo tanto, se recomienda probar las fórmulas minuciosamente. Cuando las fórmulas no generan el resultado correcto debido a un orden incorrecto de evaluación, puede experimentar agregando paréntesis para ajustar el orden de evaluación. También puede agregar paréntesis para mejorar la legibilidad de las fórmulas.

Para más información sobre los operadores de DAX y el orden de prioridad, vea Operadores de DAX.

Conversión implícita

Al escribir una fórmula de 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, pueden existir 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 administra de forma diferente, dependiendo del operador que se use. 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

Recordar cómo se trata BLANK puede ser complicado, especialmente para los principiantes de DAX. Por lo tanto, se recomienda probar las fórmulas minuciosamente. Cuando BLANK crea resultados inesperados, considere la posibilidad de usar las funciones IF y ISBLANK de DAX para probar BLANK y, después, responder de forma adecuada.