¿Como Generar un Top N en Power BI por medio de Objetos Visuales y DAX?

Publicado por

Es común en un reporte querer mostrar el Top N de algo en particular por ejemplo, se quiere saber cuál es el Top 5 de los países que más ventas generan o el Top 10 de los productos que más se venden, para tal fin en Power BI es posible realizarlo de dos diferentes formas obteniendo el mismo resultado, se puede aplicar directamente el filtro de Top N al objeto visual en el panel de campos o por medio de lenguaje DAX creando una nueva medida y aplicando algunas funciones entre ellas TOPN, a continuación se va a explicar cada una de ellas:

Por medio de Filtros en Objetos Visuales:

Como parte inicial se debe tener muy claro que es lo que se va a graficar y como se va a hacer, para que posteriormente se pueda realizar de una manera sencilla el filtro.
A continuación, se presenta un ejemplo en donde se construyó un gráfico de barras el cual muestra las ventas en $ para cada uno de los estados de USA.

Como sugiere la pregunta se quiere saber cuál es el Top 5 de los estados que más vendieron, teniendo claro que es lo que se encuentra graficado se procede a realizar el filtro Top N en el objeto visual creado de la siguiente manera:

Como pudieron observar se generó un gráfico con los 5 estados de USA que más produjeron ventas, ¿será posible poder generar el mismo grafico por medio de DAX?, si es posible a continuación se procede a realizarlo.

Por medio de DAX:

Con DAX se crean medidas y columnas calculadas que permiten realizar diferentes operaciones en Power BI, para este caso se requiere utilizar la función TOPN que básicamente devuelve los valores de las N filas generadas después de aplicar el filtro.

TOPN(<n_value>, <table>, <orderBy_expression>, [<order>[, <orderBy_expression>, [<order>]]…])

<n_value> => Numero de valores a devolver, es decir el número de valores que tiene el Top.

<table> => Tabla, columna de donde se van a extraer el TOPN valores.

<orderBy_expression> => Expresión que será tomada como referencia para ordenar los valores.

<order> => Orden en que se quieren los valores ascendente o descendente.

Es necesario crear una medida por medio de la función calcúlate que me permita devolver el valor de en este caso ventas totales para el TOP 5 de los estados de USA, la medida que se creo fue la siguiente:

Top 5 States per Sales AS DAX = CALCULATE ([Total Sales], TOPN (5 , ALL(Locations[State]) , [Total Sales] ,DESC ), VALUES(Locations[State]))

Ya con la medida creada simplemente se procede a graficar y se debería obtener el mismo grafico que se generó a partir del filtro TOPN en el objeto visual.

De esta manera se pueden crear diferentes TOPs en Power BI.

… Ahora bien que pasaría si se quisiera saber por ejemplo cuales son los dos productos que más se venden por cada estado en USA ¿se podría realizar de las dos maneras de igual forma?, véamelo.

Por medio de Filtros en Objetos Visuales:
Se realiza de la siguiente manera:

El grafico resultante es el siguiente:

¿Está el grafico respondiendo a la pregunta?, NO en esta ocasión al hacer el TOPN por medio del filtro en el objeto visual, lo que se general es el TOP 2 de los productos más vendidos en toda nuestra data y con respecto a eso en que cantidad se vendieron esos dos productos en cada estado de USA.

Entonces ¿cómo se podría resolver?

Por medio de DAX:
Para dar respuesta a nuestra pregunta es necesario realizar el cálculo de una nueva medida la cual es muy similar a la realizada en el escenario anterior.

Total Sales Top 2 Products per State at USA = CALCULATE( [Total Sales] , TOPN( 2 , ALL(Products[Product]), [Total Sales],DESC), VALUES(Products[Product] ))

En este caso lo que se quiere es devolver el Top 2 de los productos que más ventas me generen. Entonces como se quiere responder cual es el Top 2 de productos más vendidos por estado en USA, se procede a realizar un gráfico para valores de la nueva medida con respecto a los estados de USA.

El grafico resultante es el siguiente:

Ahora que conocemos la manera de realizar un TOPN de diferentes formas y se comprende la diferencia de realizarlo por medio de medidas calculadas con funciones, se podrá poder ilustrar de manera más sencilla un TOPN para diferentes escenarios por medio de objetos visuales.

¡Inténtalo!

2 comentarios

  1. Hola Sir
    agradeceria me orientara sobre lo que se pretende hacer

    tengo una carpeta que contiene archivos que se guarda cada hora y todos los días de algunas máquinas
    ping202107031400.csv
    ping202107031300.csv
    ping202107031200.csv
    ping202107021200.csv
    etc
    etc

    cada archivo generado guarda los sig datos

    hostname fecha status ip
    —————————————————————-
    máquina x 20210629 up x.x.x.x.x
    máquina y 20210629 down x.x.x.x.x.
    etc
    etc

    Me gustaría orientara sobre cómo puedo obtener un reporte

    las 5 máquinas con status que ha estado status down 3 dias seguidos al dia de hoy

    gracias de antemano

Deja un comentario

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