Función ALLSELECTED II

Si lo que pretendíamos era esto, perfecto. Si, por el contrario, lo que deseábamos mostrar en la columna “Sales %” de la tabla era el porcentaje que las ventas de cada país suponían con respecto a los países que se estuviesen mostrando en la tabla, entonces no es correcto, pues, en ese caso, las ventas de Irlanda (33.957 €) supondrían más o menos un 61% de las ventas totales mostradas en la tabla (que son 55.080 €), y las ventas de Noruega (21.122 €) supondrían más o menos el 38% de dicha cifra.

Para obtener estos resultados tendríamos que ser capaces de calcular las “ventas totales” como el resultado de limpiar los filtros (en este caso por país) que esté imponiendo el objeto visual (la tabla en nuestro ejemplo), pero respetando los filtros externos (los impuestos por la segmentación en nuestro ejemplo).

Esto puede conseguirse usando la función ALLSELECTED. Veamos cómo quedaría la medida antes de analizar el resultado:

Sales % = 
VAR __sales = [Sales]
VAR __allSales =
    CALCULATE(
        [Sales],
        ALLSELECTED(Geography[Country])
    )
RETURN
    DIVIDE(
        __sales,
        __allSales
    )

Nuestra tabla ahora quedaría del siguiente modo:

Función ALLSELECTED

mostrando los resultados esperados. Veamos con más detalle cómo se obtienen los resultados, fijándonos, por ejemplo, en el valor correspondiente a Noruega (en rojo en la imagen). El contexto de filtro inicial (en lo que a la tabla Geography se refiere) está modificado por dos elementos: la segmentación -elemento externo al objeto visual en el que se muestra la medida- que está filtrando la tabla Geography de forma que solo las filas de Irlanda y de Noruega son visibles. Y el propio objeto visual (la tabla), que está filtrando la tabla Geography de forma que solo las filas correspondientes a Irlanda son visibles. La superposición de ambos filtros hace que las únicas filas visibles sean las de ciudades irlandesas (únicas que cumplen ambas condiciones). Esto supone que las ventas (sin modificar el contexto de filtro) sean las de este país: 33.957 €, cifra que almacenamos en la variable __sales.

Ahora bien, para el cálculo de las ventas totales (almacenadas en la variable __allSales se están limpiando los filtros de la columna Geography[Country] que provengan del propio objeto visual (el filtro según el cual el país tenía que ser Irlanda), y se están dejando solo los filtros externos (los de la segmentación, según el cual el país tenía que ser Irlanda o Noruega). Tras esta modificación, lo que estamos almacenando en la variable __allSales son las ventas que se han realizado en Irlanda o Noruega (55.0870 €), por lo que nuestra medida devuelve el porcentaje de ventas de Irlanda con respecto a la de los dos países seleccionados: 61.65%.