Este documento presenta un manual de consultas MDX (Multi Dimensional Expressions) que incluye: una introducción a MDX, objetivos del manual, y una descripción de 10 comandos MDX comunes con ejemplos, incluyendo Filter, IIf, Select, Create Set, Descendants, NonEmpty, Crossjoin, Ancestors, Aggregate y ParallelPeriod. El manual proporciona información sobre la sintaxis y uso de estos comandos MDX para realizar consultas multidimensionales.
1. MANUAL DE CONSULTAS MDX
MANUAL DE
CONSULTAS
MDX
Autores:
- VILLANUEVA PONCE, WILMER
- TABOADA ARÉVALO, EVONNY
Página 1
2. MANUAL DE CONSULTAS MDX
Universidad
Nacional
Agraria
De La Selva
Facultad de ingeniería en
informática y sistemas
Tema:
MANUAL DE CONSULTAS MDX
Profesor
:
Ing. PANDO SOTO, BRIAN
Curso
:
INTELIGENCIA DE NEGOCIOS
AlumnOS
:
TABOADA AREVALO, EVONNY
Villanueva ponce, wilmer
Semestre
:
2013-II
Página 2
4. MANUAL DE CONSULTAS MDX
INTRODUCCIÓN
MDX, un acrónimo de Multi Dimensional Expressions, es una sintaxis que sostiene
la elaboración y manipulación de objetos multidimensionales y datos. MDX es
similar en muchos aspectos al Lenguaje de consulta estructurado (SQL) sintaxis,
pero no es una extensión del lenguaje SQL, de hecho, algunas de las funciones
que se suministra por MDX se pueden suministrar, aunque no tan eficiente o por
intuición, por SQL.
En el presente manual vamos a plasmar algunos comandos MDX teniendo en
cuenta sus sintaxis, argumentos y un ejemplo por cada comando mencionado.
Página 4
5. MANUAL DE CONSULTAS MDX
OBJETIVOS
Conocer
algunos
multidimensionales.
comandos
MDX
para
realizar
consultas
Página 5
6. MANUAL DE CONSULTAS MDX
1. CONSULTAS MDX
Las
expresiones
multidimensionales,
multidimensionales
como
los
cubos,
(MDX)
y
permiten
devolver
consultar
conjuntos
de
objetos
celdas
multidimensionales que contengan los datos del cubo. Este tema y los temas
secundarios proporcionan información general sobre las consultas MDX.
En los temas siguientes se describen las consultas MDX y los conjuntos de celdas
que generan, y proporcionan información más detallada acerca de la sintaxis
básica de MDX.
A continuación se hará un listado de diez comandos MDX con sus respectivos
ejemplos para entender la sintaxis:
1.1.
Filter (MDX)
Devuelve el conjunto resultante de filtrar un determinado conjunto con
una condición de búsqueda.
Sintaxis:
Filter(Set_Expression, Logical_Expression)
Argumentos:
a) Set_Expression: Expresión MDX válida que devuelve un
conjunto.
b) Logical_Expression: Expresión lógica MDX (Expresiones
multidimensionales) válida que se evalúa en true o false.
Página 6
7. MANUAL DE CONSULTAS MDX
Ejemplo:
En el ejemplo siguiente se muestra el uso de la función Filter en el eje
de filas de una consulta para devolver únicamente las fechas en las
que Internet Sales Amount es mayor que 10000 dólares:
SELECT [Measures].[Internet Sales Amount] ON 0,
FILTER( [Date].[Date].[Date].MEMBERS
, [Measures].[Internet Sales Amount]>10000)
ON 1
FROM [Adventure Works]
1.2.
IIf (MDX):
Evalúa diferentes expresiones de bifurcación en función de si una
condición booleana es true o false.
Sintaxis:
IIf(Logical_Expression, Expression1 [HINT <hints>], Expression2
[HINT <hints>])
Argumentos:
La función IIf toma tres argumentos:
iif(<condición>, <thenbranch>, <elsebranch>).
Página 7
8. MANUAL DE CONSULTAS MDX
a)
false
Logical_Expression: Una condición que se evalúa true (1) o
(0).
Debe
ser
expresión
lógica
MDX
(Expresiones
multidimensionales) válida.
b)
Expression1Hint [Eager|Strict|Lazy]]: Se usa cuando la
expresión lógica se evalúa como true. Expression1 debe ser una
expresión MDX (Expresiones multidimensionales) válida.
c)
Expression2Hint [Eager|Strict|Lazy]]: Se usa cuando la
expresión lógica se evalúa como false. Expression2 debe ser una
expresión MDX (Expresiones multidimensionales) válida.
Ejemplo:
En la consulta siguiente se muestra un uso simple de IIF dentro de
una medida calculada para devolver uno de dos valores de cadena
distintos cuando la medida Importe de venta por Internet es superior
o inferior a 10 000 dólares:
WITH MEMBER MEASURES.IIFDEMO AS
IIF([Measures].[Internet Sales Amount]>10000
, "Sales Are High", "Sales Are Low")
SELECT
{[Measures].[Internet
Amount],MEASURES.IIFDEMO} ON 0,
Sales
[Date].[Date].[Date].MEMBERS ON 1
FROM [Adventure Works]
Página 8
9. MANUAL DE CONSULTAS MDX
1.3.
SELECT (Instrucción, MDX)
Recupera datos de un cubo especificado.
Sintaxis:
[ WITH<SELECT WITH clause>
[ ,<SELECT WITH clause>...n ]
]
SELECT
[*
| ( <SELECT query axis clause>
[ ,<SELECT query axis clause>,...n ]
)
]
FROM
<SELECT subcube clause>
[ <SELECT slicer axis clause> ]
[ <SELECT cell property list clause> ]
<SELECT WITH clause> ::=
( CELL CALCULATION <CREATE CELL CALCULATION body
clause> )
| ( [ CALCULATED ] MEMBER <CREATE MEMBER body clause>)
| ( SET<CREATE SET body clause>)
| ( MEASURE = <measure body clause> )
<SELECT query axis clause> ::=
[ NON EMPTY ] Set_Expression
[ <SELECT dimension property list clause> ]
ON
Integer_Expression
| AXIS(Integer)
| COLUMNS
| ROWS
| PAGES
| SECTIONS
| CHAPTERS
<SELECT subcube clause> ::=
Cube_Name
| [NON VISUAL] (SELECT
[*
Página 9
10. MANUAL DE CONSULTAS MDX
| ( <SELECT query axis clause> [ ,
<SELECT query axis clause>,...n ] )
]
FROM
<SELECT subcube clause>
<SELECT slicer axis clause> )
<SELECT slicer axis clause> ::=
WHERE Tuple_Expression
<SELECT cell property list clause> ::=
[ CELL ] PROPERTIES CellProperty_Name
[ ,CellProperty_Name,...n ]
<SELECT dimension property list clause> ::=
[DIMENSION] PROPERTIES
(DimensionProperty_Name
[,DimensionProperty_Name,...n ] )
| (LevelProperty_Name
[, LevelProperty_Name,...n ] )
| (MemberProperty_Name
[, MemberProperty_Name,...n ] )
Argumentos:
a) Set_Expression:
Expresión
MDX
(Expresiones
multidimensionales) válida que devuelve un conjunto.
b) Integer: Entero entre 0 y 127.
c) Cube_Name: Cadena válida que proporciona un nombre de cubo.
d) Tuple_Expression: Expresión MDX válida que devuelve una
tupla.
e) CellProperty_Name:
Cadena
válida
que
representa
una
propiedad de celda.
f) DimensionProperty_Name: Cadena válida que representa una
propiedad de dimensión.
g) LevelProperty_Name:
Cadena
válida
que
representa
una
propiedad de nivel.
Página 10
11. MANUAL DE CONSULTAS MDX
h) MemberProperty_Name: Cadena válida que representa una
propiedad de miembro.
Ejemplo:
El ejemplo siguiente es una consulta de [Adventure Works] para obtener
las cifras de [Reseller Sales Amount] en una tabla donde las categorías
de producto son las columnas y los tipos comerciales de revendedor
son las filas.Observe que los totales se proporcionan para productos y
revendedores.
La instrucción SELECT es la siguiente:
select [Category].members on 0,
[Business Type].members on 1
from [Adventure Works]
where [Measures].[Reseller Sales Amount]
1.4.
CREATE SET (Instrucción, MDX)
Crea un conjunto con nombre con ámbito de sesión para el cubo actual.
Sintaxis:
CREATE [SESSION] [ STATIC | DYNAMIC ] [HIDDEN] SET
CURRENTCUBE | Cube_Name
.Set_Name AS 'Set_Expression'
[,Property_Name = Property_Value, ...n]
Argumentos:
a) Cube_Name: Expresión de cadena válida que proporciona el
nombre del cubo.
b) Set_Name: Expresión de cadena válida que proporciona el
nombre del conjunto con nombre que se va a crear.
Página 11
12. MANUAL DE CONSULTAS MDX
c) Set_Expression: Expresión MDX válida que devuelve un
conjunto.
d) Property_Name: Cadena válida que proporciona el nombre de
una propiedad del conjunto.
e) Property_Value: Expresión escalar válida que define el valor de la
propiedad del conjunto.
Ejemplo:
El siguiente ejemplo crea un conjunto denominado CoreProducts. A
continuación, la consulta SELECT llama al conjunto recién creado. La
instrucción CREATE SET debe ejecutarse antes de que se pueda
ejecutar la consulta SELECT (no se pueden ejecutar en el mismo lote).
CREATE SET [Adventure
'{[Product].[Category].[Bikes]}'
Works].[Core
Products]
AS
SELECT [Core Products] ON 0
FROM [Adventure Works]
1.5.
Descendants (MDX)
Devuelve el conjunto de descendientes de un miembro en el nivel o
distancia especificados; opcionalmente puede incluir o excluir los
descendientes de otros niveles.
Sintaxis:
Member expression syntax using a level expression
Descendants(Member_Expression [ , Level_Expression [ ,Desc_Flag
]])
Member expression syntax using a numeric expression
Descendants(Member_Expression [ , Distance [ ,Desc_Flag ] ] )
Set expression syntax using a level expression
Descendants(Set_Expression [ , Level_Expression [ ,Desc_Flag ] ] )
Página 12
13. MANUAL DE CONSULTAS MDX
Member expression syntax using a numeric expression
Descendants(Set_Expression [ , Distance [ ,Desc_Flag ] ] )
Argumentos:
a) Member_Expression: Expresión MDX válida que devuelve un
miembro.
b) Set_Expression: Expresión MDX válida que devuelve un conjunto.
c) Level_Expression: Expresión MDX válida que devuelve un nivel.
d) Distance: Expresión numérica válida que especifica la distancia
desde el miembro especificado.
e) Desc_Flag: Expresión de cadena válida que especifica una marca
de
descripción
que
distingue
entre
posibles
conjuntos
de
descendientes.
Ejemplo:
El ejemplo siguiente devuelve el miembro especificado (UnitedStates) y los
miembros entre el miembro especificado (UnitedStates) y los miembros del
nivel anterior al nivel especificado (City). El ejemplo devuelve el propio
miembro especificado (UnitedStates) y los miembros del nivel StateProvince (el nivel anterior al nivel City). Este ejemplo incluye argumentos
comentados para permitir probar de manera sencilla otros argumentos para
esta función.
Página 13
14. MANUAL DE CONSULTAS MDX
SELECT Descendants
([Geography].[Geography].[Country].&[United States]
//, [Geography].[Geography].[Country]
, [Geography].[Geography].[City]
//, [Geography].[Geography].Levels (3)
//, SELF
//, AFTER
, BEFORE
// BEFORE_AND_AFTER
//, SELF_AND_AFTER
//, SELF_AND_BEFORE
//,SELF_BEFORE_AFTER
//,LEAVES
) ON 0
FROM [Adventure Works]
1.6.
NonEmpty (MDX)
Devuelve un conjunto de tuplas que no están vacías de un conjunto
especificado, según el producto cruzado del conjunto especificado con
un segundo conjunto.
Sintaxis:
NONEMPTY(set_expression1 [,set_expression2])
Argumentos:
a) set_expression1: Expresión MDX válida que devuelve un conjunto.
b) set_expression2: Expresión MDX válida que devuelve un conjunto.
Página 14
15. MANUAL DE CONSULTAS MDX
Ejemplo:
En la consulta siguiente se muestra un ejemplo simple de NonEmpty,
que devuelve todos los clientes que tenían un valor distinto de NULL
para Internet Sales Amount a fecha de 1 de julio de 2001:
SELECT [Measures].[Internet Sales Amount] ON 0,
NONEMPTY(
[Customer].[Customer].[Customer].MEMBERS
,
{([Date].[Calendar].[Date].&[20010701],
Sales Amount])}
[Measures].[Internet
)
ON 1
FROM [Adventure Works]
1.7.
Crossjoin (MDX)
Devuelve el producto cruzado de uno o más conjuntos.
Sintaxis:
Standard syntax
Crossjoin(Set_Expression1 ,Set_Expression2 [,...n] )
Alternate syntax
Set_Expression1 * Set_Expression2 [* ...n]
Argumentos:
a)
Set_Expression1: Expresión MDX válida que devuelve un
conjunto.
b)
Set_Expression2: Expresión MDX válida que devuelve un
conjunto.
Página 15
16. MANUAL DE CONSULTAS MDX
Ejemplo:
Devolver cifra de ventas por Internet por estado para los estados de
Estados Unidos.
SELECT CROSSJOIN
(
{[Customer].[Country].[United States]},
[Customer].[State-Province].Members
) ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
1.8.
Ancestors (MDX)
Función que devuelve el conjunto de todos los antecesores de un
miembro especificado en un nivel especificado o a una distancia
especificada del miembro. Con Microsoft SQL Server AnalysisServices,
el
conjunto
devuelto
siempre
constará
de
un
solo
miembro;
AnalysisServices no admite varios elementos primarios para un miembro
único.
Sintaxis:
Level syntax
Ancestors(Member_Expression, Level_Expression)
Numeric syntax
Ancestors(Member_Expression, Distance)
Argumentos:
a) Member_Expression: Expresión MDX válida que devuelve un
miembro.
b) Level_Expression: Expresión MDX válida que devuelve un nivel.
Página 16
17. MANUAL DE CONSULTAS MDX
c) Distance: Expresión numérica válida que especifica la distancia
desde el miembro especificado.
Ejemplo:
El ejemplo siguiente utiliza la función Ancestors para devolver la
medida Internet Sales Amount de un miembro, su miembro primario y
su miembro primario de segundo nivel. Este ejemplo utiliza expresiones
de nivel para especificar los niveles que se devolverán. Los niveles
están en la misma jerarquía que el miembro especificado en la
expresión de miembro.
SELECT {
Ancestors([Product].[Product Categories].[Product].[Mountain100 Silver, 38],[Product].[Product Categories].[Category]),
Ancestors([Product].[Product Categories].[Product].[Mountain100 Silver, 38],[Product].[Product Categories].[Subcategory]),
Ancestors([Product].[Product Categories].[Product].[Mountain100 Silver, 38],[Product].[Product Categories].[Product])
} ON 0,
[Measures].[Internet Sales Amount] ON 1
FROM [Adventure Works]
1.9.
Aggregate (MDX)
Devuelve un número que se calcula al agregar las celdas devueltas por
la expresión establecida. Si no se proporciona una expresión numérica,
esta función agrega cada medida del contexto de consulta actual
mediante el operador de agregación predeterminado especificado para
cada medida.Si se proporciona una expresión numérica, esta función
primero evalúa y después suma la expresión numérica de cada celda
del conjunto especificado.
Sintaxis:
Aggregate(Set_Expression [ ,Numeric_Expression ])
Página 17
18. MANUAL DE CONSULTAS MDX
Argumentos:
a)
Set_Expression: Expresión MDX válida que devuelve un
conjunto.
b)
Numeric_Expression: Expresión numérica válida que suele
ser una expresión MDX de las coordenadas de celdas que devuelven
un número.
Ejemplo:
El
ejemplo
siguiente
devuelve
la
suma
del
miembro
Measures.[OrderQuantity], agregado en los primeros ocho meses de
2003 incluidos en la dimensión Date del cubo Adventure Works.
WITH MEMBER [Date].[Calendar].[First8Months2003] AS
Aggregate(
PeriodsToDate(
[Date].[Calendar].[Calendar Year],
[Date].[Calendar].[Month].[August 2003]
)
)
SELECT
[Date].[Calendar].[First8Months2003] ON COLUMNS,
[Product].[Category].Children ON ROWS
FROM
[Adventure Works]
WHERE
[Measures].[Order Quantity]
1.10. ParallelPeriod (MDX)
Devuelve un miembro de un periodo anterior en la misma posición
relativa que el indicado.
Página 18
19. MANUAL DE CONSULTAS MDX
Sintaxis:
ParallelPeriod(
[
Level_Expression
Member_Expression ] ] ] )
[
,Index
[
,
Argumentos:
a) Level_Expression: Expresión MDX válida que devuelve un
nivel.
b) Index: Expresión numérica válida que especifica el número de
períodos paralelos que se van a retrasar.
c) Member_Expression: Expresión MDX válida que devuelve un
miembro.
Ejemplo:
El ejemplo siguiente devuelve el período paralelo del mes de octubre de
2003 con un retraso de tres períodos, de acuerdo con el nivel de
trimestre, que devuelve el mes de enero de 2003.
SELECT ParallelPeriod ([Date].[Calendar].[Calendar Quarter]
,3
, [Date].[Calendar].[Month].[October 2003])
ON 0
FROM [Adventure Works]
Página 19
20. MANUAL DE CONSULTAS MDX
CONCLUSIONES
Se logró recopilar los comandos MDX con sus respectivos ejemplos dando
como resultados mejor entendimiento de éstos.
Página 20