Que tal amigos, espero estén muy bien! Les saluda Brian Castillo y hoy vamos a resolver
el caso de agrupar en “OTROS” todo lo que este afuera del TOPN que nosotros elijamos.
¿Recuerdan que en vídeos anteriores les indique que existen diferentes formas de agrupar en OTROS? Hoy veremos otra forma de hacerlo.
Crearemos nuestra tabla calculada de elementos únicos de la columna [Nombre] de nuestra tabla BD_Ventas de la siguiente manera, la llamaremos Nombre mas otros:
Nombre mas otros =
UNION (
VALUES ( BD_Ventas[Nombre] );
ROW ( "Otros"; "Otros" )
)
Nos dirigiremos a la vista de diagrama y vamos a crear una relación entre la tabla Nombre mas otros y BD_Ventas que tendrá una cardinalidad de uno a muchos, pero automáticamente Power BI nos creara una relación de uno a uno que tendremos que modificar, damos doble clic y donde dice cardinalidad cambiamos a la opción de varios a uno y en dirección del filtro cruzado lo cambiaremos a única. Regresaremos a nuestro lienzo, y seleccionamos el objeto tabla donde agregaremos la columna Nombre de nuestra tabla Nombre mas otros, como pueden observar nos aparece el elemento OTROS, pero si agregamos nuestra medida Total Ventas se va a desaparecer porque no existe valor para este elemento que hemos creado.
Para poder crear nuestro TopX más otros debemos hacer lo siguiente: Como primer punto necesitamos crear nuestro Top”X” y lo haremos dinámico. Este TopX lo vamos a crear utilizando la función TOPN. La cual quedaría de la siguiente forma:
TopX =
VAR _NoElementos = 5
VAR _ElementosUnicos = VALUES ( 'Nombre mas otros'[Nombre] )
VAR _ElementosTopX =
CALCULATE (
[Total Ventas];
TOPN (
_NoElementos;
ALL ( 'Nombre mas otros'[Nombre]);
[Total Ventas]; DESC
);
_ElementosUnicos
)
RETURN
_ElementosTopX
Nos toca probarla en la tabla, seleccionamos el objeto tabla y agregamos la medida TopX, como podemos observar nos devuelve únicamente los 5 elementos que nosotros indicamos en la variable _NoElementos. Pero como les dije al inicio del vídeo necesitamos que este Top”X” sea dinámico, para eso vamos a ir al menú MODELADO y buscamos Parámetro nuevo, acá vamos a cambiar el nombre a NoElementosTop, dejamos Tipo de datos como Número entero y en valor mínimo pondremos 2 y en valor máximo 7, el incremento lo dejamos en 1 y valor predeterminado lo cambiamos a 5, esto quiere decir que podremos crear un Top2 e incrementar en 1 hasta llegar a un Top7, pero si no ponemos ningún valor automáticamente este parámetro tomará el valor de 5, dando como resultado un Top5 (pero para que todo esto funcione lo debemos de agregar a nuestra medida TopX.
Primero les explico: La opción de parámetro nos ha creado una tabla que inicia en 2 y finaliza en 7 incrementando línea a línea en 1, adicional en la configuración pusimos que el valor por defecto era 5, ¿qué quiere decir esto? Que si no seleccionamos ningún valor por defecto la medida tomará el valor de 5 y adicional nos a creado una medida llamada [Valor NoElementosTop]. Ahora sí, hagamos dinámico nuestro TopX es tan sencillo como ir a la medida TopX y sustituimos el valor de la variable _NoElementos que actualmente es 5 por la medida [Valor NoElementosTop].
Probemos si el top ha quedado dinámico moviendo el control deslizante, listo ya tenemos nuestro TopX dinámico.
Como nota, la tabla NoElementosTop no la vamos a utilizar más así que les recomiendo ocultarla.
Ahora toca crear la medida donde podamos visualizar en OTROS todo lo que quedo fuera del TopX.
Primero organicemos nuestras medidas. Vamos a inicio, especificar datos y re nombramos la tabla con el nombre medidas. Vamos a la vista de diagrama y seleccionamos la medida TopX y Total Ventas y la arrastramos a la tabla medidas, ocultamos la columna 1, regresamos al informe, ocultamos y mostramos de nuevo Campos.
Continuemos, solo falta crear la medida.
TopX mas otros =
VAR _TopXAll = CALCULATE ( [TopX]; ALL ( 'Nombre mas otros'[Nombre] ) )
VAR _VentasAll = CALCULATE ( [Total Ventas]; ALL ( 'Nombre mas otros'[Nombre] ) )
VAR _ValoresOtros = _VentasAll - _TopXAll
RETURN
IF (
HASONEVALUE ( 'Nombre mas otros'[Nombre] );
SWITCH (
SELECTEDVALUE ( 'Nombre mas otros'[Nombre] );
"Otros"; _ValoresOtros;
[TopX]
); [Total Ventas]
)
¿Qué les parece? Me gustaría leerlos y saber si les parece útil este tipo de vídeos.
