Cuando estamos creando medidas en PowerPivot es muy habitual jugar con los contextos para realizar cálculos complejos. Cómo ya veíamos en la serie sobre la evaluación de contextos tenemos multitud de funciones que nos permite modificar el contexto para adecuar el cálculo a nuestras necesidades. Una de las modificaciones más habituales que hacemos es la de eliminar los filtros establecidos por slicers, filters, filas y columnas, para lo cual utilizábamos funciones como ALL o ALLEXCEPT. Hasta el momento con ALL lo que hacíamos era eliminar todos los filtros establecidos y con ALLEXCEPT eliminábamos todos los filtros establecidos salvo los que pasábamos como parámetros a la función, ahora con SQL Server 2012 aparece una nueva función: ALLSELECTED, que nos permitirá seleccionar todo aquello filtrado explícitamente por el usuario (slicers y filtros). Esto es muy útil cuando queremos calcular por ejemplo porcentajes de contribución al padre.

Como siempre la forma más sencilla de entender el funcionamiento es con un ejemplo práctico asique vamos allá. Disponemos de un modelo semántico BISM que incorpora algunas tablas de Adventure Works, entre ellas la tabla de ventas por Internet. Lo primero que hacemos es añadir una columna calculada con la ganancia de cada venta en esta tabla:

Novedades de PowerPivot en Denali (IX): ALLSELECTED

Ahora nuestro objetivo es definir una medida en el modelo semántico que permita analizar al usuario analizar el porcentaje de ganancia que proporciona una determinada celda de la tabla dinámica respecto a los datos filtrados explícitamente mediante slicers, por ejemplo analizando por año, trimestre y mes y filtrando en slicers los datos de la geografía.

Novedades de PowerPivot en Denali (IX): ALLSELECTED

Nos gustaría saber rápidamente para cada uno de esos meses que porcentaje de ganancia hemos obtenido sobre el total obtenido en esa geografía. Hasta el momento lo que haríamos sería crear una función en DAX que eliminara todos los contextos establecidos excepto las columnas utilizadas en los slicers mediante ALLEXCEPT, pero claro ¿y si mañana el usuario añade un nuevo slicer? ¿cómo sabemos que columnas está utilizando si este análisis lo hace después de haber creado el modelo?… La respuesta a estas preguntas es ALLSELECTED, que nos permite hacer un calculo basándonos en todo lo filtrado por el usuario. Esta sería la formula de la medida que debemos añadir en nuestro modelo:

=Sum(FactInternetSales[Profit])/CALCULATE(SUM(FactInternetSales[Profit]),ALLSELECTED())

Y este sería el resultado en nuestro análisis de Excel:

Novedades de PowerPivot en Denali (IX): ALLSELECTED

Hay que destacar la versatilidad que ofrece esta función a nuestro cálculo, ya que si ahora añadimos por ejemplo un slicer para el color del producto no necesitamos modificar nada.

Novedades de PowerPivot en Denali (IX): ALLSELECTED

Hasta aquí nuestro ejemplo de ALLSELECTED. En TechNet disponéis de algún ejemplo más y de información sobre esta función. Espero que os haya gustado y os sea de utilidad.

 

Un saludo

Ilde

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like
Arquitectura Power BI Premium
Leer más

Arquitecturas Power BI Premium

Repasamos las posibles arquitecturas que puede tomar un proyecto de BI, partiendo de un escenario de Power BI Premium y en el que principalmente el dato viene de orígenes ya estructurados, analizando las principales ventajas e inconvenientes de cada uno, para poder elegir siempre el mejor camino.
Leer más

Cálculos de tiempo personalizados en SSAS Multidimensional

Si para ciertas cuentas no queremos sumar en los cálculos temporales, sino hacer otra operación, por ejemplo, la media, podemos definir una columna (TBAverage) que para cada cuenta indique si suma (0) o hace la media (1). La usaremos en el cubo como una medida que comprobaremos para cada nivel para detectar si esa cuenta debe sumar o hacer la media para los cálculos temporales.
Leer más

Calculate Groups en SSAS Tabular 2019

Hace unos meses se lanzó al público SQL Server 2019 Analysis Services CTP 2.3. Esta nueva versión trae una nueva funcionalidad para los modelos tabulares, los calculate groups. Los calculate groups vienen a hacernos la vida un poco más fácil a la hora de desarrollar modelos tabulares, dando la opción de reutilizar métricas, como pueden ser por ejemplo, las relacionadas con el tiempo.