Una expresión DAX siempre retorna una tabla o un número escalar. Una tabla en el mundo DAX puede tener una o más columnas y cero o más filas. Un valor escalar puede ser de cualquier de los tipos de datos que puede manejar el lenguaje. Se pueden definir expresiones DAX para tanto crear columnas calculadas o medidas, ambas pueden formar parte de una consulta DAX.

Los tipos de datos que soporta DAX son los siguientes:

  • Integer
  • Real
  • Currency
  • Date (datetime)
  • TRUE/FALSE (Boolean)
  • String
  • BLOB (binary large object)

La conversión entre tipos suele ser en la mayoría de los casos automática a no ser que se quiera hacer una conversión explicita entre tipos de datos para forzar una conducta de ciertos datos.

El tipo de datos Currency, es un tipo de datos decimal, coma fija muy útil para cálculos financieros. El tipo de datos Datetime es un número float, donde la parte entera representa el número de días desde el 30 de Diciembre de 1899 y la parte decimal representa la fracción del día (horas, minutos y segundos), al convertirlo a un valor decimal. Por ejemplo, la expresión:

= NOW() + 0.5 

Incrementa en 12 horas la hora exacta del día a la cual se ejecuta esa instrucción. Sin embargo, recomiendo utilizar funciones específicas del tipo DATEADD cuando sea posible y utilizar la función TRUNC para obtener la parte entera fuera de la parte decimal.

No voy a entrar en el análisis de todos los operadores DAX pero si haré mención al operador de concatenación «&»y operadores lógicos «&&» y «||».

El operador de concatenación «&» se utiliza para concatenar strings, mientras que los operadores booleanos && y || se utilizan para evaluar expresiones lógicas. Destacar que el operador lógico AND se puede utilizar como función AND o como operador en bruto, lo mismo ocurre con el operador OR, es decir,

AND ([pais] = "USA",[cantidad] > 0) es equivalente a  
[pais] = "USA" && [cantidad] > 0 

Valores Empty o Missing

En DAX, BLANK representa un valor missing o vacío. Puedes generar este valor llamando a la función BLANK, la cual no necesita argumentos. Simplemente es el resultado de una expresión el cual no puedes utilizarlo en sentencias de comparativa. En una expresión número el valor BLANK se convierte a 0, mientras que en una cadena se convierte a valor vacío. A continuación, pongo algunos ejemplos de resultado de expresiones utilizando BLANK con diferentes operaciones de diferentes tipos.