jueves, 25 de marzo de 2021

Más de MDX y funciones CUBO

Como continuación de un artículo previo donde hablábamos del lenguaje MDX en las funciones CUBO, hoy expondré algunas otras funciones en MDX útiles en nuestro día a día.
Más de MDX y funciones CUBO

Estas funciones son: Tail, Subset y Union
Funciones MDX interesantes que conviene tener presente...

Empezaremos con TAIL(Expresión_de_Conjunto [ ,Num_elementos ] )
Esta función nos devuelve un subconjunto de elementos, los indicados en el argumento 'Num_Elementos' (o uno si se omite), de entre todos los elementos del conjunto marcada en el primero argumento... pero comenzando a contar desde el último!!.

Por ejemplo, de la base de datos trabajada y cargada en el Modelo de datos vista en artículos previos (ver aquí), y con los siguientes datos acumulados, que a modo de demostración vemos en la siguiente tabla dinámica, podríamos obtener los tres últimos paises con mayores ventas.
En este caso combinamos la función en MDX TAIL con otra ya vista ORDER.
Así en R7 definimos nuestro subconjunto:
=CONJUNTOCUBO("ThisWorkbookDataModel";
"Tail (Order
([Tabla1].[País].[All].Children, [Measures].[Sum_Ventas], DESC )
,3 )";"Tail_Top3")
Para luego en R8 obtener el listado de miembros de dicho subconjunto:
=MIEMBRORANGOCUBO("ThisWorkbookDataModel";$R$7;SECUENCIA(RECUENTOCONJUNTOCUBO($R$7)))
Más de MDX y funciones CUBO

Comprobamos como efectivamente, el subconjunto obtenido, responde a los tres últimos paises de acuerdo a las ventas acumuladas obtenidas...
Es similar a la función BottomCount(Expresión_de_Conjunto, Cuenta [,Numeric_Expression])
, pero Tail recupera el subconjunto según el orden indicado, mientras que BottomCount lo devuelve en sentido inverso, i.e., el primer elemento sería realmente el último, el segundo el penúltimo, y sucesivamente.
Un ejemplo en W7 escribimos:
=CONJUNTOCUBO("ThisWorkbookDataModel";
"BottomCount([Tabla1].[País].Children,3,([measures].[Sum_Ventas]))";
"Bottom3")
Lo vemos en la imagen siguiente:
Más de MDX y funciones CUBO


La siguiente función MDX importante es: Subset(Expresión_de_Conjunto, Elemento_Inicial [ ,Num_Elem_Extraer ] )
Función interesante que funciona de manera similar a EXTRAE en la hoja de cálculo... donde a partir de un conjunto indicado, recuperamos los elementos desde una posición inicial (OJO!! elementos indizados en base cero!!) extraemos un número de elementos dados.
Un ejemplo en R15:
=CONJUNTOCUBO("ThisWorkbookDataModel";
"Subset (
Order ([Tabla1].[País].[All].Children, [Measures].[Sum_Ventas], DESC )
,0 ,3 )";"SubSet-3")
donde obtenemos los tres primeros elementos: posiciones 0,1 y 2
o también en W15:
=CONJUNTOCUBO("ThisWorkbookDataModel";
"Subset (
Order ([Tabla1].[País].[All].Children, [Measures].[Sum_Ventas], DESC )
,1 ,2 )";"SubSet-2-3")
donde recuperamos las posiciones 1 y 2, esto es, el segundo y tercero...
Más de MDX y funciones CUBO

Acabaremos hoy con la función MDX Union(Expresión_de_Conjunto1, Expresión_de_Conjunto2 [,...n][, ALL])
esta función devuelve un nuevo conjunto resultante de la unión/anexado de diferentes conjuntos.
Interesante conocer que hay formas alternativas de obtener el mismo resultado a la función Union:
{Expresión_de_Conjunto1} + {Expresión_de_Conjunto2} [+...{Expresión_de_Conjunton}] o alternativamente
{Expresión_de_Conjunto1 , Expresión_de_Conjunto2 [,...Expresión_de_Conjunton]}

OJO!! con las llaves, y dónde se colocan en estas expresiones!!!.

En los siguientes ejemplos vemos el resultado obtenido:
En R25 escribimos:
=CONJUNTOCUBO("ThisWorkbookDataModel";
"Union( [Tabla1].[Año].&[2014],[Tabla1].[Año].&[2016] )";
"Union 2014-2016")
O en T25:
=CONJUNTOCUBO("ThisWorkbookDataModel";
" {[Tabla1].[Año].&[2014]} +{ [Tabla1].[Año].&[2016]} ";
"Union 2014-2016")
O en U25:
=CONJUNTOCUBO("ThisWorkbookDataModel";
" {[Tabla1].[Año].&[2014], [Tabla1].[Año].&[2016]} ";
"Union 2014-2016")
comprobamos en todos los casos en R29, T29 y U29:
=VALORCUBO("ThisWorkbookDataModel";"[Measures].[Sum_Ventas]";R25)
que el resultado coincide con el desplegado en la tabla dinámica (a efectos de verificación!).
Más de MDX y funciones CUBO

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.