Compartir a través de


Referencia de operadores de DAX para PowerPivot

El lenguaje DAX (Expresión de análisis de datos) utiliza operadores para crear expresiones que comparan valores, realizan cálculos aritméticos o trabajan con cadenas. En esta sección se describe el uso de cada operador.

Tipos de operadores

Hay cuatro tipos diferentes de operadores de cálculo: aritmético, comparación, concatenación de texto y lógico.

Operadores aritméticos

Para realizar las operaciones matemáticas básicas, como la suma, la resta o la multiplicación, combinar números y generar resultados numéricos, utilice los siguientes operadores aritméticos.

Operador aritmético

Significado

Ejemplo

+ (signo más)

Suma

3+3

– (signo menos)

Resta/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 un operador binario y como un operador unario. Un operador binario requiere números a ambos lados del operador y realiza una suma. Cuando se utilizan valores en una fórmula de DAX a ambos lados del operador binario, DAX intenta convertir los valores a tipos de datos numéricos, si aún no lo son. En cambio, el operador unario se puede aplicar a cualquier tipo de argumento. El símbolo más no afecta al tipo ni al valor y simplemente se omite, 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 operadores siguientes. Cuando se comparan dos valores mediante estos operadores, el resultado es un valor lógico: TRUE o FALSE.

Operador de comparación

Significado

Ejemplo

=

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 es igual a

[Region] <> "USA"

Operador de concatenación de texto

Utilice la 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 lógicos

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

Operador de texto

Significado

Ejemplos

&& (Y comercial doble)

Crea una condición AND entre dos expresiones que tienen cada una 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 cualquier expresión devuelve TRUE, el resultado es TRUE; solo cuando ambas expresiones son FALSE, el resultado es FALSE.

(([Region] = "France") || ([BikeBuyer] = "yes"))

Operadores y orden de prioridad

En algunos casos, el orden en el que se realiza el cálculo puede afectar al valor devuelto. Por consiguiente, es importante entender cómo se determina el orden y cómo se puede cambiar para obtener los resultados deseados.

Orden de cálculo

Una expresión evalúa los operadores y valores en un orden concreto. Todas las expresiones siempre comienzan con un signo igual (=). El signo igual indica que los caracteres subsiguientes constituyen una expresión.

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

Prioridad de los operadores

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

Operador

Descripción

^

Exponenciación

Signo (como en –1)

* y /

Multiplicación y división

+ y –

Suma y resta

&

Conecta dos cadenas de texto (concatenación)

=< ><=>=<>

Comparación

Utilizar paréntesis para controlar el orden de cálculo

Para cambiar el orden de evaluación, la parte de la fórmula que se debe calcular primero debe incluirse entre paréntesis. Por ejemplo, la fórmula siguiente da como resultado 11 porque la multiplicación se calcula antes que la suma. La fórmula multiplica 2 por 3 y, a continuación, suma 5 al resultado.

=5+2*3

En cambio, si utiliza los paréntesis para cambiar la sintaxis, el orden se cambia para que se sumen 5 y 2, y el resultado se multiplique por 3 para obtener 21.

=(5+2)*3

En el ejemplo siguiente, los paréntesis alrededor de la primera parte de la fórmula fuerzan el cálculo para que en primer lugar evalúe la expresión (3 + 0.25) y, a continuación, divida el resultado por 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 primero, según las reglas de prioridad para operadores y, a continuación, se aplica el operador de signo. El resultado de esta expresión es -4.

=-2^2

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

= (-2)^2

Notas de compatibilidad

DAX, cuyo funcionamiento es parecido al de Microsoft Excel, administra y compara con facilidad varios tipos de datos. Sin embargo, el motor de cálculo subyacente está basado en SQL Server Analysis Services y proporciona muchas de las características avanzadas de un almacén de datos relacional, incluida una mayor compatibilidad para tipos de fecha y hora. Por consiguiente, en ciertos casos los resultados de los cálculos o el comportamiento de las funciones pueden no ser iguales a los de Excel. Además, DAX admite más tipos de datos que Excel. En esta sección se describen las diferencias claves.

Forzar 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. Sin embargo, si los tipos de datos son diferentes, DAX los convertirá en un tipo de zona de datos común para la comparación, como sigue:

  1. Primero, ambos operandos se convierten al posible tipo de zona de datos común más grande.

  2. Luego, se comparan los operandos.

Por ejemplo, supongamos que dispone de dos números que desea combinar. Un número es el resultado de una fórmula, como =[Price] * .20 y el resultado puede contener muchas posiciones decimales. El otro número es un entero proporcionado como un valor de cadena.

En este caso, DAX convertirá ambos números en números reales en un formato numérico, utilizando el formato numérico más grande que pueda almacenar ambos tipos de números. A continuación, DAX comparará los valores.

En cambio, Excel intenta comparar valores de tipos diferentes sin primero forzarlos a un tipo común. Por esta razón, los resultados obtenidos en DAX pueden ser diferentes a los obtenidos en Excel para la misma expresión de comparación.

Tipos de datos usados en DAX

Tipos de datos usados en Excel

Numbers (I8, R8)

Boolean

String

DateTime

Currency

Numbers (R8)

Boolean

String

Variant

Currency

Para obtener más información acerca de la conversión implícita de tipos de datos, vea Tipos de datos admitidos en libros PowerPivot.

Diferencias en el orden de prioridad

El orden de prioridad de las operaciones en las fórmulas de DAX es básicamente igual que el utilizado por Microsoft Excel, pero no se admiten algunos operadores de Excel, como el porcentaje. Asimismo, los rangos no se admiten.

Por consiguiente, cada vez que copie y pegue fórmulas de Excel, asegúrese de revisar la fórmula cuidadosamente, ya que puede que algunos operadores o elementos de las fórmulas no sean válidos. En caso de cualquier duda acerca del orden en el que se realizan las operaciones, le recomendamos que use paréntesis para controlar el orden de las mismas y, de este modo, evitar cualquier ambigüedad en el resultado.