2. Queries en MDX.

En MDX una query tiene tres partes:

➢ Columnas y Filas (Dicers o Axis)
➢ Dato (Data Grid)
➢ Filtro (Slicers)

La sintaxis es la siguiente:

[WITH <formula_expression> [, <formula_expression> ...]]
SELECT [<axis_expression>, [<axis_expression>...]]
FROM [<cube_expression>]
[WHERE [slicer_expression]]

Puedes ver que las clausulas WITH y WHERE son opcionales, porque estan indicadas con [].

Por tanto, la query mas simple que se puede hacer es:

SELECT
FROM [Adventure Works]

Para indicar los axis o ejes, se debe especificar el conjunto de datos que quieres sacar y si lo quieres sacar en las columnas o en las filas.

Por tanto:

Select <Set> on columns, <Set> on rows
From <Cubo>
Where <Filtro>

La palabra Columns es equivalente a 0 y la palabra rows equivalente a 1. Por tanto, se puede escribir la query de la siguiente manera:

Select <Set> on 0, <Set> on 1
From <Cubo>
Where <Filtro>

Por tanto en la Query tenemos las siguientes cláusulas:

➢ La clausula SELECT es donde se especifican los datos que se necesitan visualizar en cada eje (Columnas, Filas).

➢ La clausula FROM usada para especificar el nombre del cubo donde esta guardada la información que se quiere sacar.

➢ La clausula WHERE usada para filtrar una pequeña sección de datos de los cuales quieres sacar los resultados.

➢ La cláusula WITH sirve para crear calculos o conjuntos que se usaran en las queries sucesivas a esta cláusula. Esta cláusula se usa normalmente para definir y crear miembros calculados y conjuntos con nombre. Más adelante se explicará con más detalle.

 

Ejemplos de queries básicas con el cubo Analysis DW

select [Measures].members on columns
from [Analysis DW]

Resultado:

Queries básicas con el cubo Analysis DW:

 

select [Measures].[Cantidad Pedida] on columns
from [Analysis DW]
where ([Dim Periodo].[Año].&[2006],
       [Dim Producto].[Categoria - Nombre].[Software],
       [Zona Pedido].[Nombre Zona].&[Barcelones])

Resultado:

Queries básicas con el cubo Analysis DW:

 

select [Measures].[Importe Pedido] on columns,
       [Dim Cliente].[Zonas Clientes].[Todos Clientes].&[1] on rows
from [Analysis DW]
where [Zona Pedido].[Nombre Zona].&[Barcelones]

Resultado:

Queries básicas con el cubo Analysis DW

 

select [Measures].[Importe Pedido] on columns,
       [Dim Cliente].[Zonas Clientes].members on rows
from [Analysis DW]
where [Zona Pedido].[Nombre Zona].&[Barcelones]

Resultado:

select [Measures].[Importe Pedido] on columns,
       non empty([Dim Cliente].[Zonas Clientes].members) on rows
from [Analysis DW]
where [Zona Pedido].[Nombre Zona].&[Barcelones]

Resultado:

Queries básicas con el cubo Analysis DW