Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: ejemplo de cross join anidado

...

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])

...

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])

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
titleEjemplo de CrossJoin anidado
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}