Está en la página 1de 31

Copyright © Todos los Derechos Reservados - Cibertec Perú SAC

Cap. 11 Sentencias MDX


Objetivos Generales

 Describir las características de MDX


 Comprender los conceptos de Tuplas y Sets
 Escribir sentencia MDX básicas
 Utilizar funciones avanzadas: DESCENDANTS, ANCESTORS,
GENERATE
 Filtrar y ordenar los resultados
Contenido de Agenda

 ¿Qué es MDX?
 Consultas MDX
 Cell

 Tuplas

 Sets
1.¿Qué es MDX?

 MDX es un lenguaje para expresiones MultiDimensionales.


 MDX fue creado expresamente para Cálculos Multidimensionales.
 MDX no es específico para Analysis Services.
 Parte del OLE DB para OLAP son patrocinados por
especificaciones Microsoft para consultas multidimensionales.
 Otros proveedores usan MDX.
Contenido de Agenda

 ¿Qué es MDX?
 Consultas MDX
 Cell

 Tuplas

 Sets
2.2 Cell

 Todo información de las


medidas de un cubo se
encuentra almacena en las
celdas.
 Una celda (cell) es una
intersección específica de los
miembros de las dimensiones
del cubo .
2.1 Tuplas

 Sistema de referencia para


identificar unívocamente a una
celda o celdas.
 Es muy similar a los sistemas
empleados para identificar un
punto en el espacio en dos
dimensiones.
 En Excel la ubicaciones de
una celda esta dada por el
nombre de la columna y la fila.
2.1 Tuplas

 Las T – uplas identifican celdas


individuales y conjuntos de celdas
a través de la especificación de
las dimensiones y los miembros
cuya intersección da origen a la
celda (o celdas).
 Ejemplo: La siguiente t – upla
representa la celda encerrada en rojo.

(Route.[Eastern Hemisphere].Africa, Time.[2nd


half].[4th quarter], Source.nonground.Air,
Measures.Packages)
2.1 Tuplas

 Ejemplo: La siguiente t – upla


representa la celda encerrada en
rojo.
 (Route.[Eastern Hemisphere])
2.1 Sets

 Un set es un conjunto de t – uplas.


 Siempre se representa entre llaves.

{ (Source.nonground.air, Time.[1st half].[1st quarter]),


(Source.nonground.air, Time.[2nd half].[4th quarter]) }
Ejercicios

 Uso de la expresión Members:


Devuelve un set que contiene a todos los miembros de una dimensión.
Ejercicios

 Uso Sets:
Mostrar todas las medidas de la fact Internet Sales.
select {
[Measures].[Internet Discount Amount],
[Measures].[Internet Freight],
[Measures].[Internet Order Quantity],
[Measures].[Internet Sales Amount],
[Measures].[Internet Tax Amt],
[Measures].[Recuento Internet Sales]
} on columns
from sales
Ejercicios

 Uso Sets:
Mostrar todas las medidas para los miembros Customer y Reseller de
la Jerarquia “Promotion Category” de la dimensión Promotion.

SELECT Measures.Members ON COLUMNS,


{
[Promotion].[Promotion Category].[Customer],
[Promotion].[Promotion Category].[Reseller]
} ON ROWS
FROM Sales
Ejercicios

 Uso Children: Esta función, aplicada sobre un miembro específico,


devuelve un set que contiene a todos sus miembros hijos.
En este ejemplo, se consultará el valor de todas las medidas del cubo,
para todos los miembros hijos de las categorías de promoción
Customer y Reseller, según la jerarquía Promotion Categories: .
SELECT Measures.Members ON COLUMNS,
{
[Promotion].[Promotion Categories].[Promotion Category].[Customer].children,
[Promotion].[Promotion Categories].[Promotion Category].[Reseller].children
} ON ROWS
FROM Sales
Ejercicios

 Uso DESCENDANTS : devuelve un set que contiene son todos los


hijos de un miembro determinado, en un nivel determinado.
 Sintaxis:
DESCENDANTS(member, level [, flags])
Donde “member” representa al miembro cuyos descendientes se
desea obtener, “level” es el nivel donde se ubican los descendientes, y
“flags” puede tomar uno de los siguientes valores:
Ejercicios

 SELF: Valor por defecto. Retorna a los descendientes de “member” que se encuentran dentro del nivel
especificado por “level”.
 AFTER: Retorna a todos los descendientes en los niveles que se encuentran debajo de “level”.
 BEFORE: Retorna a todos los descendientes que se encuentran entre “member” y “level”, sin incluir a
los miembros de “level”.
 BEFORE_AND_AFTER: Retorna a todos los descendientes de “member”, excepto a los miembros del
nivel “level”.
 SELF_AND_AFTER: Retorna a todos los descendientes de “member” en el nivel “level” y todos sus
niveles inferiores.
 SELF_AND_BEFORE: Retorna a todos los descencientes de “member” en el nivel “level” y todos los
niveles entre “member” y “level”.
 SELF_BEFORE_AFTER: Retorna a todos los descendientes de “member” en todos los niveles que se
encuentran debajo del nivel de “member”.
 LEAVES: Retorna todos los miembros leaf (sin descendientes) que descienden de “member” y se
encuentran entre el nivel de “level” y el nivel que contiene a “member”
Ejercicios

 SELF: Valor por defecto. Retorna a los descendientes de “member”


que se encuentran dentro del nivel especificado por “level”.
Ejemplo: La siguiente consulta obtiene los valores de todas las medidas del
cubo Sales, para el miembro United States de la dimensión Geography, y
para todos sus descendientes en el nivel City según la jerarquía Geographic
location:
select Measures.Members on columns,
{
[Geography].[Jerarquía].[Country Region Name].[United States],
descendants(
[Geography].[Jerarquía].[Country Region Name].[United States],
[Geography].[Jerarquía].[City], SELF
)
} on rows
from Sales
Ejercicios

 AFTER: Retorna a todos los descendientes en los niveles que se


encuentran debajo de “level”.
Ejemplo: Obtiene los valores de todas las medidas del cubo Sales, para el
miembro
Australia de la dimensión Geography, y para todos sus descendientes debajo
del nivel Country Region Name según la jerarquía Geographic location:
select Measures.Members on columns,
{
[Geography].[Jerarquía].[Country Region Name].[Australia],
descendants(
[Geography].[Jerarquía].[Country Region Name].[Australia],
[Geography].[Jerarquía].[Country Region Name], After
)
} on rows
from Sales
Ejercicios

 BEFORE: Retorna a todos los descendientes que se encuentran


entre “member” y “level”, sin incluir a los miembros de “level”.
 Ejemplo: Obtiene los valores de todas las medidas del cubo Sales, y los
descendientes que se encuentran entre el miembro Australia de la
dimensión Geography y los que están antes del nivel City según la jerarquía
Geographic location:
select Measures.Members on columns,
{
descendants(
[Geography].[Jerarquía].[Country Region Name].[Australia],
[Geography].[Jerarquía].[City], Before
)
} on rows
from Sales
Ejercicios

 BEFORE_AND_AFTER: Retorna a todos los descendientes de


“member”, excepto a los miembros del nivel “level”.
 Ejemplo: La siguiente sentencia retorna a United States y todos sus
descendientes hasta el nivel anterior a City:
SELECT Measures.Members ON COLUMNS,
DESCENDANTS(
[Geography].[Jerarquía].[Country Region Name].[United States],
[Geography].[Jerarquía].[City], before_and_after
) ON ROWS
FROM Sales
Ejercicios

 La cláusula WHERE: Se utiliza para limitar el conjunto de celdas


que se totalizan para dar origen a la información de la consulta. La
cláusula WHERE define un slicer conformado por dimensiones y
miembros específicos, que restringen el universo de la consulta.
Ejemplo: la siguiente sentencia muestra la medida Internet Order Quantity,
para todos los años de la jerarquía Calendar en la dimensión Order Date, y
para todos los miembros en el nivel Country Region Name de la jerarquía
Geographic location:
SELECT [Order Date].[Jerarquía].[Year].Members ON COLUMNS,
[Geography].[Jerarquía].[Country Region Name].Members ON ROWS
FROM Sales
where ([Measures].[Internet Order Quantity])
Ejercicios

 Si se desea restringir más la consulta para que sólo considere la


categoría “Bikes”, se puede utilizar la siguiente expresión slicer:

SELECT [Order Date].[Jerarquía].[Year].Members ON COLUMNS,


[Geography].[Jerarquía].[Country Region Name].Members ON ROWS
FROM Sales
where ([Measures].[Internet Order Quantity],
[Product].[Product Categories].[Product Category Name].[Bikes])
Ejercicios

 Miembros calculados (calculated members) y sets con nombre


(named sets)
 Los miembros calculados (calculated members) permiten la
definición de fórmulas personalizadas, las cuales pueden ser tratadas
como nuevos miembros en una dimensión específica. La sintaxis de
creación de miembros calculados es la siguiente:

WITH MEMBER dimensión.nombre AS 'expresión'

Donde “dimensión” representa la dimensión a la cual pertenecerá el


nuevo miembro calculado.
Ejercicios

El siguiente ejemplo muestra la sintaxis de definición de un miembro


calculado llamado PorcentajeVentasInternet, ubicado dentro de la
dimensión Measures:
WITH MEMBER Measures.PorcentajeVentasInternet AS
'Measures.[Internet Sales Amount] /
([Measures].[Sales Amount] + [Measures].[Internet Sales
Amount])',
FORMAT_STRING='PERCENT'

select Measures.PorcentajeVentasInternet on columns


from sales
Ejercicios

El siguiente ejemplo muestra la creación de un miembro calculado en


Measures llamado TotalVentas. Con base en este miembro calculado,
se crea otro miembro llamado PorcentajeVentasInternet:
WITH
MEMBER Measures.TotalVentas AS
'[Measures].[Sales Amount] + [Measures].[Internet Sales Amount]'
MEMBER Measures.PorcentajeVentasInternet AS
'Measures.[Internet Sales Amount] / Measures.TotalVentas',
FORMAT_STRING='PERCENT'

select {[Order Date].[Jerarquía].Year.MEMBERS} ON COLUMNS,


[Geography].[Jerarquía].[Country Region Name].MEMBERS ON ROWS
FROM SALES
WHERE (Measures.PorcentajeVentasInternet)
Ejercicios

set con nombre (named set):permiten crear sets en tiempo de


ejecución y utilizarlos en consultas MDX. La sintaxis para definir sets
con nombre es la siguiente:
WITH SET nombre_set AS 'expression'
Ejercicios

Por ejemplo, se puede crear un set llamado Norteamerica que


contenga a los miembros Canada y United States de la dimensión
Geography como se muestra a continuación:
WITH SET [Norteamerica] AS
'{[Geography].[Jerarquía].[Canada], [Geography].[Jerarquía].[United States]}'

select [Norteamerica] ON COLUMNS,


[Product].[Product Categories].[Product Category Name].MEMBERS ON ROWS
FROM SALES
WHERE (Measures.[Sales Amount])
Ejercicios

La función GENERATE : Esta función aplica el set2 a cada miembro de


set1 y retorna el set generado por esta operación. Por ejemplo, la
siguiente cláusula:
GENERATE(set1, set2 [, ALL])
Ejemplo:
GENERATE({Perú, México, Ecuador}, {Bebidas, Condimentos}, ALL)
Retorna el set {Bebidas, Condimentos, Bebidas, Condimentos, Bebidas,
Condimentos}. Para cada miembro del primer set (países) se ha
generado repetidamente el segundo set (productos). Las repeticiones se
han conservado debido a la inclusión de la cláusula ALL. Si se desea
eliminar las repeticiones, la cláusula correcta es la siguiente:
GENERATE({Perú, México, Ecuador}, {Bebidas, Condimentos})
Ejercicios

Ejemplo:
La siguiente sentencia genera, por cada miembro en el nivel Year de la jerarquía
Calendar en la dimensión Order Date, un set conformado por dicho miembro y sus hijos
directos
SELECT GENERATE([Order Date].[Jerarquía].Year.MEMBERS,
{[Order Date].[Jerarquía].CURRENTMEMBER,
[Order Date].[Jerarquía].CURRENTMEMBER.CHILDREN}) ON COLUMNS,
[Product].[Product Categories].[Product Category Name].MEMBERS ON ROWS
FROM Sales
WHERE Measures.[Sales Amount]
Ejercicios

CROSSJOIN :Esta función produce todas las combinaciones de dos sets


Por ejemplo, la siguiente sentencia muestra, por cada miembro del nivel Promotion
Category de la dimensión Promotion, a todos los miembros del nivel Product Category
Name de la dimensión Product.

SELECT {Measures.[Sales Amount], Measures.[Order


Quantity]} ON COLUMNS,
CROSSJOIN([Promotion].[Promotion Categories].[Promotion
Category].MEMBERS,
[Product].[Product Categories].[Product Category
Name].MEMBERS) ON ROWS
FROM Sales
Laboratorio: 6. Escribir Consultas MDX

 Tiempo: 20 minutos
 Escribir consultas MDX en la base de datos
AdventureWorksDataMart.

También podría gustarte