Operadores de DAX

El lenguaje DAX (Expresiones de análisis de datos) usa operadores para crear expresiones que comparan valores, realizan cálculos aritméticos o trabajan con cadenas.

Tipos de operadores

Existen cuatro tipos distintos de operadores de cálculo: aritméticos, de comparación, de concatenación de texto y lógicos.

Operadores aritméticos

Use los siguientes operadores aritméticos para realizar operaciones matemáticas básicas (como sumas, restas o multiplicaciones), para combinar números y para producir resultados numéricos.

Operadores aritméticos Significado Ejemplo
+ (signo más) Suma 3+3
– (signo menos) Resta o inversión del signo 3–1–1
* (asterisco) Multiplicación 3*3
/ (barra diagonal) División 3/3
^ (símbolo de intercalación) Exponenciación 16^4

Nota

El signo más puede funcionar como operador binario y como operador unario. Un operador binario requiere números en ambos lados del operador y realiza la suma. Cuando se usan valores en una fórmula DAX a ambos lados del operador binario, DAX intenta convertir los valores a tipos de datos numéricos si aún no son números. En cambio, el operador unario se puede aplicar a cualquier tipo de argumento. El signo más no afecta al tipo o al valor y simplemente se pasa por alto, mientras que el operador menos crea un valor negativo, si se aplica a un valor numérico.

Operadores de comparación

Puede comparar dos valores con los siguientes operadores. Cuando se comparan dos valores con estos operadores, el resultado es un valor lógico, ya sea TRUE o FALSE.

Operadores de comparación Significado Ejemplo
= Igual a [Region] = "USA"
== Estrictamente igual a [Region] == "USA"
> Mayor que [Sales Date] > "Jan 2009"
< Menor que [Sales Date] < "Jan 1 2009"
>= Mayor o igual que [Amount] >= 20000
<= Menor o igual que [Amount] <= 100
<> No igual a [Region] <> "USA"

Todos los operadores de comparación, excepto ==, tratan BLANK como equivalente al número 0, una cadena vacía "", DATE(1899, 12, 30), o FALSE. Como resultado, [Column] = 0 será true cuando el valor de [Column] sea 0 o BLANK. Por el contrario, [Column] == 0 solo es true cuando el valor de [Column] es 0.

Operador de concatenación de texto

Use el signo Y comercial (&) para unir, o concatenar, dos o más cadenas de texto a fin de generar un único fragmento de texto.

Operador de texto Significado Ejemplo
& (y comercial) Conecta, o concatena, dos valores para generar un valor de texto continuo. [Region] & ", " & [City]

Operadores logicos

Use los operadores lógicos (&&) y (||) para combinar expresiones y generar un solo resultado.

Operador de texto Significado Ejemplos
&& (doble Y comercial) Crea una condición AND entre dos expresiones que tienen ambas 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. ([Region] = "France") && ([BikeBuyer] = "yes"))
|| (doble barra vertical) 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. (([Region] = "France") || ([BikeBuyer] = "yes"))
IN Crea una condición OR lógica entre cada fila que se compara con una tabla. Nota: En la sintaxis del constructor de tabla se emplean llaves. 'Product'[Color] IN { "Red", "Blue", "Black" }

Operadores y orden de precedencia

En algunos casos, el orden en el que se realiza el cálculo puede afectar al valor devuelto, de ahí que sea importante comprender cómo se determina el orden y cómo este se puede cambiar para obtener los resultados deseados.

Orden del cálculo

Una expresión evalúa los operadores y los valores en un orden específico. Todas las expresiones comienzan siempre con un signo igual (=). Este signo igual indica que los caracteres tras él constituyen una expresión.

Después del signo igual están los elementos que se van a calcular (los operandos), que se separan con operadores de cálculo. Las expresiones siempre se leen de izquierda a derecha, pero el orden en el que los elementos se agrupan se puede controlar en cierto grado mediante el uso de paréntesis.

Prioridad de los operadores

Si se combinan varios operadores en una misma fórmula, las operaciones se ordenan según la siguiente tabla. Si los operadores tienen el mismo valor de precedencia, se ordenan de izquierda a derecha. Por ejemplo, si una expresión contiene un operador de multiplicación y división, se evalúan en el orden en que aparecen en la expresión, de izquierda a derecha.

Operador Descripción
^ Exponenciación
Inversión del signo (como en –1)
* y / Multiplicación y división
+ y – Suma y resta
& Conecta dos cadenas de texto (concatenación)
=,==,<,>,<=,>=,<>,IN De comparación
NOT NOT (operador unario)

Uso de paréntesis para controlar el orden del cálculo

Para cambiar el orden de evaluación, debe incluir entre paréntesis la parte de la fórmula que deba calcularse en primer lugar. Por ejemplo, la siguiente fórmula da como resultado 11 porque la multiplicación se calcula antes que la suma. La fórmula multiplica 2 por 3 y, tras ello, suma 5 al resultado.

=5+2*3  

Por el contrario, si se usan paréntesis para cambiar la sintaxis, el orden se cambia de modo que 5 y 2 se suman y el resultado de esto se multiplica por 3, dando como resultado 21.

=(5+2)*3  

En el siguiente ejemplo, los paréntesis que rodean la primera parte de la fórmula hacen que el cálculo evalúe la expresión (3 + 0.25) en primer lugar y, luego, divida el resultado entre el resultado de la expresión (3 - 0.25).

=(3 + 0.25)/(3 - 0.25)  

En el siguiente ejemplo, el operador de exponenciación se aplica en primer lugar, según las reglas de precedencia de operadores, y, tras ello, se aplica el operador de inversión del signo. El resultado de esta expresión es -4.

=-2^2  

Para garantizar que el operador de inversión del signo se aplica primero al valor numérico, se pueden usar paréntesis para controlar los operadores, como se muestra en el siguiente ejemplo. El resultado de esta expresión es 4.

= (-2)^2  

Compatibilidad

DAX controla y compara fácilmente varios tipos de datos, de forma muy similar a como lo hace Microsoft Excel, pero el motor de cálculo subyacente se basa en SQL Server Analysis Services, con lo cual proporciona las características avanzadas adicionales de los almacenes de datos relacionales, incluida una mayor compatibilidad con los tipos de fecha y hora. Por lo tanto, es posible que, en algunos casos, los resultados de los cálculos o el comportamiento de las funciones no sean los mismos que en Excel. Además, DAX admite más tipos de datos que Excel. En esta sección se describen las principales diferencias.

Coerción de tipos de datos de operandos

En general, los dos operandos de los lados izquierdo y derecho de cualquier operador deben ser del mismo tipo de datos. Si los tipos de datos son diferentes, DAX los convertirá a un tipo de datos común para aplicar el operador en algunos casos:

  1. Ambos operandos se convierten al tipo de datos común más grande posible.
  2. El operador se aplica, si es posible.

Por ejemplo, supongamos que tiene dos números que quiere combinar. Un número es el resultado de una fórmula, como =[Price] * .20, y dicho resultado puede contener muchos decimales, mientras que el otro número es un entero que se ha proporcionado como valor de cadena.

En este caso, DAX convertirá ambos números en números reales en formato numérico, usando el formato numérico más grande que pueda almacenar ambos tipos de números. Tras ello, DAX aplicará la multiplicación.

Dependiendo de la combinación de tipos de datos, es posible que la coerción de tipos no pueda aplicarse a las operaciones de comparación. Para obtener una lista completa de los tipos de datos admitidos en DAX, consulte Tipos de datos admitidos en los modelos tabulares y Tipos de datos en Power BI Desktop.

Los tipos Integer, Real Number, Currency, Date/time y Blank se consideran numéricos con fines de comparación. Blank evalúa como cero cuando se realiza una comparación. En las operaciones de comparación se pueden usar las siguientes combinaciones de tipos de datos.

Tipo de datos del lado izquierdo Tipo de datos del lado derecho
Numérica Numérica
Booleano Boolean
String Cadena

Cualquier otra combinación de comparaciones de tipos de datos devolverá un error. Por ejemplo, una fórmula como ="1" > 0 devuelve un error que indica que las operaciones de comparación DAX no permiten la comparación de valores de tipo Text con valores de tipo Integer.

Tipos de datos usados en DAX Tipos de datos usados en Excel
Números (I8, R8) Números (R8)
Cadena Cadena
Booleano Boolean
DateTime Variante
Moneda Moneda

Diferencias en el orden de precedencia

El orden de precedencia de las operaciones en las fórmulas DAX es básicamente el mismo que el de Microsoft Excel, pero algunos operadores de Excel no se admiten, como, por ejemplo, el de porcentaje. Tampoco se admiten intervalos.

Por lo tanto, siempre que copie y pegue fórmulas de Excel, asegúrese de revisarla cuidadosamente, ya que es posible que algunos operadores o elementos de las fórmulas no sean válidos. Cuando tenga alguna duda sobre el orden en el que se realizan las operaciones, se recomienda usar paréntesis para controlar el orden de las operaciones y acabar con cualquier ambigüedad en el resultado.

Sintaxis DAX
Nomenclatura de parámetros DAX