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:
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:
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:
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: