¿Cómo Calcular Porcentajes Mediante Opciones Nativas y Leguaje DAX en Power BI?

Es muy común que dentro de los indicadores que maneja una compañía se incluya el cálculo de diferentes porcentajes, el porcentaje de ventas para un determinado producto o el porcentaje de cumplimiento con respecto a una meta, en un reporte se hace muy importante poder mostrar la información de la manera que se requiere, para tal fin es necesario poder comprender muy bien lo que el “contexto de filtrado” significa en Power BI. Para entender este concepto de una manera fácil y practica se realiza el cálculo de un porcentaje con las opciones nativas que ofrece Power BI y por medio de medidas calculadas con el uso de algunas funciones en lenguaje DAX.

Mediante Opciones Nativas de Power BI:

El termino opción nativa hace referencia a las diferentes opciones de cálculo, filtrado, visualización, entre otros, que contiene la herramienta de Power BI para el diseño de reportes. Antes que todo se debe tener muy claro el requerimiento de visualización que generalmente va ligado a una pregunta de negocio, en este caso particular inicialmente se quiere responder la pregunta: ¿Cuál es el porcentaje del total de ventas por producto?

Para realizar el cálculo del porcentaje es necesario realizar un cálculo previo el cual se llamará Total de Ventas que para este ejemplo se define como [Ventas] * [Unidades], datos que se encuentran en la tabla llamada Fact_Ventas.

Por medio de lenguaje DAX se realizan medidas y columnas calculadas en Power BI, en este caso es necesario crear una medida utilizando la función SUMX que básicamente evalúa una expresión fila a fila en una determinada tabla y devuelve la suma de dicha expresión.

SUMX(<table>, <expression>)

<table> => Tabla indicada.

<expression> => Expresión indicada.

Entonces para este caso particular la media será:

Total de Ventas = SUMX(Fact_Ventas, Fact_Ventas[Unidades] * Fact_Ventas[Venta])

Ya que se conoce el cálculo de Total de Ventas, ahora es necesario visualizar cada uno de los productos con su respectivo valor de Total de Ventas por medio de la generación de un objeto visual, para este caso se utilizará una tabla a la cual se le agregará el Producto y la medida del Total de Ventas, obteniendo así el siguiente resultado:

Ahora bien, por medio de las opciones nativas que Power BI contiene se puede saber ¿Cuál es el porcentaje del total de ventas por producto?, simplemente agregando nuevamente la medida de Total de Ventas e indicándole en el panel de campos que se muestre como porcentaje del gran total, obteniendo así el siguiente resultado:

Por medio de las opciones nativas de Power BI se da respuesta a la pregunta de negocio planteada, pero que pasaría si ahora se requiere generar un detalle para alguno de los productos por medio de un filtro, ¿será que se puede realizar de la misma manera?, la respuesta es NO, en este caso al filtrar un producto en específico el Total de Ventas queda reducido el total específico para ese determinado producto es decir que el porcentaje del total de ventas siempre será igual a 100%, es decir que el contexto de filtrado en este caso es simplemente que la medida previamente calculada de Total de Ventas se ve afectada por un filtro para este caso un determinado producto.

Es ahí donde por medio de lenguaje DAX se va a sacar la medida de dicho contexto de filtrado, para poder visualizar el cálculo cumpliendo con los nuevos requerimientos.

Mediante Lenguaje DAX:

Teniendo en cuenta que se quiere generar es un detalle para un determinado producto que se escoja por medio de un filtro, en donde se pueda visualizar:

Total de Ventas para dicho producto

Total de Ventas para todos los productos

• Porcentaje del Total de Ventas para dicho producto.

Ya que el Total de Ventas para un determinado producto ya se encuentra calculado, es necesario calcular el Total de Ventas para todos los productos por medio de una medida calculada en DAX, para ello se utilizará la función ALL que devuelve todos los valores en una determinada columna ignorando cualquier filtro que se aplique.

ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )

Es decir, se va a sacar de contexto de filtrado la medida previamente calculada llamada Total Ventas para que no se vea afectada por el filtro generado para el producto. Obteniendo así:

ALL Total de Ventas = CALCULATE([Total de Ventas] , ALL(Dim_Producto[Producto]))

Con este cálculo ya se puede visualizar el Total de Ventas de un determinado producto comparándolo con el Total de Ventas de todos los productos mediante un objeto visual, entonces se genera una tarjeta para que indique a que producto se hace referencia y un gráfico de barras para poder realizar la comparación entre las dos ventas.

Ahora bien, el cálculo del porcentaje no es más que dividir estas dos expresiones, para este cálculo se utiliza la función DIVIDE la cual permite poder especificar un resultado en caso de que el denominador sea 0.

DIVIDE(<numerator>, <denominator> [,<alternateresult>])

Obteniendo así:

% GT = DIVIDE([Total de Ventas] , [ALL Total de Ventas] , BLANK())

No queda más que visualizar el cálculo del porcentaje en un objeto visual, para este caso se va a utilizar una tarjeta.

Pues bien, ahora que se comprende el termino contexto de filtrado y se conoce como calcular porcentajes mediante lenguaje DAX es hora de generar tus propios tableros.

Inténtalo.

comments powered by Disqus