Wiki Markup |
---|
{scrollbar}
----
h2. Combinación de varias dimensiones en ejes (anidamiento de dimensiones)
Supongamos que se desea visualizar las unidades vendidas de bicicletas Mountain Bikes profesionales y de recreación en Brasil y España en los años 2001 y 2002.
Esta consulta involucra 3 dimensiones: productos, ubicaciones y fechas. La visualización usando 3 ejes es algo complejo y lo que en general se quiere es presentar esta información siguiendo el formato bi-dimensional y encapsular las 3 dimensiones. La siguiente consulta MDX presenta la información requerida combinando 2 de las dimensiones en un eje.
{code}
|
...
Combinación de varias dimensiones en ejes (anidamiento de dimensiones)
Supongamos que se desea visualizar las unidades vendidas de bicicletas Mountain Bikes profesionales y de recreación en Brasil y España en los años 2001 y 2002.
Esta consulta involucra 3 dimensiones: productos, ubicaciones y fechas. La visualización usando 3 ejes es algo complejo y lo que en general se quiere es presentar esta información siguiendo el formato bi-dimensional y encapsular las 3 dimensiones. La siguiente consulta MDX presenta la información requerida combinando 2 de las dimensiones en un eje.
Code Block |
---|
SELECT
{Date.[2001], Date.[2002]} ON COLUMNS,
{
(Location.[Brazil], Products.[Mountain Bikes].[Professional]),
(Location.[Brazil], Products.[Mountain Bikes].[Recreational]),
(Location.[Spain], Products.[Mountain Bikes].[Professional]),
(Location.[Spain], Products.[Mountain Bikes].[Recreational])
} ON ROWS
FROM Demo
WHERE (Measures.[Units Sold])
{code}
|
En
...
esta
...
consulta,
...
se
...
plantea
...
por
...
enumeración
...
las
...
combinaciones
...
que
...
nos
...
interesan.
...
El
...
eje
...
de
...
las
...
filas
...
contiene
...
2
...
dimensiones,
...
ubicación
...
(
...
Location
...
)
...
y
...
productos
...
(
...
Products
...
).
...
Se
...
puede
...
decir
...
que
...
la
...
dimensión
...
producto
...
está
...
anidada
...
en
...
la
...
dimensión
...
ubicación
...
y
...
se
...
tienen
...
todas
...
las
...
combinaciones
...
de
...
los
...
2
...
elementos
...
de
...
interes
...
de
...
cada
...
una
...
de
...
las
...
2
...
dimensiones,
...
lo
...
que
...
hace
...
que
...
se
...
tengan
...
4
...
tuplas
...
en
...
el
...
eje
...
de
...
las
...
filas.
...
Una
...
tupla
...
en
...
MDX
...
es
...
una
...
combinación
...
de
...
miembros
...
de
...
dimensiones
...
originados
...
de
...
dimensiones
...
diferentes.
...
Con
...
seguridad
...
que
...
la
...
pregunta
...
que
...
surge
...
aqui
...
es,
...
¿qué
...
pasa
...
si
...
lo
...
que
...
se
...
quiere
...
visualizar
...
es
...
algo
...
análogo
...
pero
...
considerando
...
todas
...
las
...
líneas
...
de
...
bicicletas
...
Mountain
...
Bikes
...
contra
...
todos
...
los
...
países?.
...
Es
...
decir,
...
¿qué
...
brinda
...
MDX,
...
nuevamente,
...
como
...
alternativa
...
a
...
la
...
enumeración?.
...
MDX
...
brinda
...
la
...
función
...
CrossJoin()
...
.
...
Esta
...
función
...
produce
...
todas
...
las
...
combinaciones
...
de
...
2
...
conjuntos
...
(es
...
decir,
...
un
...
"producto
...
cartesiano").
...
Su
...
uso
...
común
...
es
...
para
...
situaciones
...
como
...
la
...
presentada
...
arriba
...
combinando
...
2
...
o
...
mas
...
dimensiones
...
en
...
un
...
único
...
eje
...
a
...
los
...
efectos
...
de
...
visualizar
...
los
...
datos
...
bajo
...
la
...
forma
...
de
...
una
...
matriz
...
bi-dimensional
...
(valga
...
la
...
redundancia).
...
La
...
siguiente
...
consulta
...
permite
...
visualizar
...
la
...
información
...
que
...
surge
...
de
...
la
...
pregunta
...
anterior.
...
Code Block |
---|
SELECT
{Date.[2001], Date.[2002]} ON COLUMNS,
CrossJoin(
{Location.children},
{Products.[Mountain Bikes].children}) ON ROWS
FROM Demo
WHERE (Measures.[Units Sold])
{code}
_ |
CrossJoin()
...
espera
...
como
...
parámetros
...
2
...
conjuntos,
...
de
...
manera
...
que
...
si
...
se
...
necesita
...
realizar
...
un
...
anidamiento
...
de
...
más
...
de
...
dos
...
conjuntos,
...
se
...
debe
...
anidar
...
la
...
invocación a dicha función. Por otro lado, hay que tener en cuenta que los 2 conjuntos sobre los cuales se quiere hacer el producto cartesiano deben originarse a partir de dimensiones diferentes.
Code Block | ||
---|---|---|
| ||
select {Measures.[Importe neto], Measures.[Unidades (neto)]} on columns,
crossjoin (
{ [Articulos].[linea].members},
crossjoin (
{ [Regional].[regional].members},
{ [Clientes].[canal].members}
)
) on rows
from [Ventas (modificado)]
where ([Fecha].[Mes actual]) |
Esta función ofrece una combinación interesante de conjuntos obtenibles a partir de las diferentes dimensiones pero su uso debe tener en cuenta que se trata de una función que tiene un impacto potencial importante en la performance de la consulta MDX.
Wiki Markup |
---|
{scrollbar} |