Consultas DAX
Con las consultas DAX, puede consultar y devolver los datos definidos mediante una expresión de tabla. Los clientes de informes crean consultas DAX cada vez que un campo se coloca en una superficie del informe o cuando se aplica un filtro o cálculo. Las consultas DAX también se pueden crear y ejecutar en SQL Server Management Studio (SSMS) y en herramientas de código abierto como DAX Studio. Las consultas DAX que se ejecutan en SSMS y DAX Studio devuelven los resultados como una tabla.
Antes de aprender sobre las consultas, es importante tener un conocimiento sólido de los aspectos básicos de DAX. Si aún no lo ha hecho, asegúrese de consultar Información general sobre DAX.
Sintaxis
[DEFINE { MEASURE <tableName>[<name>] = <expression> }
{ VAR <name> = <expression>}]
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]
Palabras clave
EVALUATE (necesario)
En el nivel más básico, una consulta DAX es una instrucción EVALUATE que contiene una expresión de tabla. Sin embargo, una consulta puede contener varias instrucciones EVALUATE.
Sintaxis
EVALUATE <table>
Argumentos
| Término | Definición |
|---|---|
| tabla | Expresión de tabla. |
Ejemplo
EVALUATE(
'Internet Sales'
)
Devuelve todas las filas y columnas de la tabla Ventas por Internet, como una tabla.

ORDER BY (opcional)
La palabra clave opcional ORDER BY define una o varias expresiones que se usan para ordenar los resultados de la consulta. Cualquier expresión que se puede evaluar para cada fila del resultado es válida.
Sintaxis
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
Argumentos
| Término | Definición |
|---|---|
| expression | Cualquier expresión DAX que devuelve un valor escalar único. |
| ASC | (Predeterminado) Criterio de ordenación ascendente. |
| DESC | Criterio de ordenación ascendente. |
Ejemplo
EVALUATE(
'Internet Sales'
)
ORDER BY
'Internet Sales'[Order Date]
Devuelve todas las filas y columnas de la tabla Ventas por Internet, ordenadas por Fecha de pedido, como una tabla.

START AT (opcional)
La palabra clave opcional START AT se usa dentro de una cláusula ORDER BY. Define el valor en el que comienzan los resultados de la consulta.
Sintaxis
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]
Argumentos
| Término | Definición |
|---|---|
| valor | Valor constante No puede ser una expresión. |
| parameter | Nombre de un parámetro en una instrucción XMLA con el carácter @ como prefijo. |
Los argumentos START AT tienen una correspondencia uno a uno con las columnas de la cláusula ORDER BY. En la cláusula START AT puede haber tantos argumentos como en la cláusula ORDER BY, pero no más. El primer argumento START AT define el valor inicial de la columna 1 de las columnas ORDER BY. El segundo argumento START AT define el valor inicial de la columna 2 de las columnas ORDER BY dentro de las filas que cumplen el primer valor de la columna 1.
Ejemplo
EVALUATE(
'Internet Sales'
)
ORDER BY
'Internet Sales'[Sales Order Number]
START AT "SO7000"
Devuelve todas las filas y columnas de la tabla Internet Sales, ordenadas por Número de pedido de venta, empezando en SO7000.

En una sola consulta se pueden especificar varias cláusulas EVALUATE/ORDER BY/START AT.
DEFINE (opcional)
La palabra clave opcional DEFINE define las entidades que solo existen mientras dura la consulta. Las definiciones son válidas para todas las instrucciones EVALUATE. Las entidades pueden ser variables, medidas, tablas y columnas. Las definiciones pueden hacer referencia a otras definiciones que aparecen antes o después de la definición actual. Las definiciones normalmente preceden a la instrucción EVALUATE.
Sintaxis
[DEFINE { MEASURE <tableName>[<name>] = <expression> }
{ VAR <name> = <expression>}]
EVALUATE <table>
Argumentos
| Término | Definición |
|---|---|
| tableName | Nombre de una tabla existente que usa la sintaxis DAX estándar. No puede ser una expresión. |
| name | Nombre de una medida nueva. No puede ser una expresión. |
| expression | Cualquier expresión DAX que devuelve un valor escalar único. La expresión puede usar cualquiera de las medidas definidas. La expresión debe devolver una tabla. Si se requiere un valor escalar, ajuste el escalar dentro de una función ROW() para generar una tabla. |
| VAR | Expresión opcional como una variable con nombre. Una expresión VAR se puede pasar como argumento a otras expresiones. |
Ejemplo
DEFINE
MEASURE 'Internet Sales'[Internet Total Sales] = SUM('Internet Sales'[Sales Amount])
EVALUATE
SUMMARIZECOLUMNS
(
'Date'[Calendar Year],
TREATAS({2013, 2014}, 'Date'[Calendar Year]),
"Total Sales", [Internet Total Sales],
"Combined Years Total Sales", CALCULATE([Internet Total Sales], ALLSELECTED('Date'[Calendar Year]))
)
ORDER BY [Calendar Year]
Devuelve como una tabla las ventas totales calculadas para los años 2013 y 2014, y las ventas totales calculadas combinadas para los años 2013 y 2014. La medida de la instrucción DEFINE, Internet Total Sales, se usa tanto en las expresiones Total Sales como en Combined Years Total Sales.

Parámetros en consultas DAX
Se puede parametrizar una instrucción de consulta DAX bien definida y, después, usarla una y otra vez con tan solo realizar cambios en los valores de parámetro.
El Método Execute (XMLA) tiene un elemento de la colección Elemento de parámetros (XMLA) que permite definir parámetros y asignarles un valor. Dentro de la colección, cada elemento de Elemento de parámetros (XMLA) define el nombre del parámetro y un valor.
Para hacer referencia a los parámetros XMLA, debe añadir un carácter @ como prefijo al nombre del parámetro. En cualquier lugar de la sintaxis donde se permita un valor, este se podrá reemplazar por una llamada de parámetro. Todos los parámetros XMLA se escriben como texto.
Importante
Los parámetros definidos en la sección parámetros y que no se usan en el elemento <STATEMENT> generan una respuesta de error en XMLA. Los parámetros usados y no definidos en el elemento <Parameters> generan una respuesta de error en XMLA.