[PowerBi] Filtro que cambia unidades de visualizaciones

Muchos de los lectores ya deben estar familiarizados con Power Bi. Cierto es que la herramienta nos permite definir las unidades de cada visualization eligiendo si la vista deseada para cada uno es ver los números en millones, miles, etc. 

Recientemente me había comentado un usuario que a él le gustaría poder cambiar las visualizaciones de las páginas que está viendo entre miles y millones. Me comentaba sobre tablas y gráficos que dependiendo el nivel de granularidad que utilizan en los filtros preferían ver números más pequeños agrupados en millones o miles según corresponda. Esto despertó mi curiosidad puesto que si bien Power Bi nos permite definir la unidad en cada visualización, no es algo que el usuario pueda hacer. Para esto, mi mente pensó una gran pequeña palabra. DAX. 

En este artículo vamos a ver como generar un filtro que permita seleccionar las unidades que mostrarán las visualizaciones en pantalla.

La resolución de este caso es muy sencilla pero puede resultarle engorrosa a muchos dependiendo el tamaño de modelo y medidas que hayan creado. La solución se base en la construcción de una tabla aislada y medidas dax. Una tabla aislada es una tabla que creamos de forma auxiliar al modelo y nunca se relacionaría con el.

En nuestro caso podemos "especificar datos" para ingresar manualmente una tabla de una sola columna que contendrá los siguientes valores.

image

Dicha tabla se incorporaría al modelo pero no estaría relacionada con ninguna tabla:

image

Nuestra clave para que el modelo actual sea influido por este indicador estará basado dos pasos.

1. Definir el formato "None/Ninguno" a las unidades de las visualizaciones, puesto que va a convertirlo el usuario final manualmente.

image


2. Cambiar nuestras medidas dax que nos gustaría que sean afectadas por este selector. En caso que no exista creamos una nueva sencilla como el ejemplo que sigue a continuación:

image

VAR _Units = SELECTEDVALUE(Cambiador_unidades[Unidades], "Sin resumir")

RETURN

SWITCH(_Units, "Millones", 0.000001, "Miles", 0.001, 1)

Nos nutrimos de SELECTEDVALUE que nos indicará el valor del selector, que vamos a ponerlo de selección única obligatoria (radio button), que esté pintado en el momento. Luego hacemos un pequeño SWITCH que según el valor seleccionado va a multiplicar (o podría dividir) el resultado. 

Por supuesto que podría optimizarse más aún en DAX creando una medida que devuelva el valor del SWITCH, esto dependerá de cuantas medidas necesitamos que empleen el conversor de unidades para ir optimizando cada vez más.

Ejemplo final:

Ahora podemos apreciar como el la etiqueta de datos de las lineas cambia. En mi caso los valores eran en miles por lo tanto los millones muestran 0. Prestemos atención al tooltip porque el mismo podría presentar el número con otro formato más completo como hice en el ejemplo.

De este modo hemos construido un selector de unidades para nuestras páginas que nos permitiría cambiar valores de una medida. Consideremos que esto no solo serviría para miles y millones, sino que podemos usarlo en cualquier tipo de conversión matemática que nos interese en las medidas o nos pida un usuario. Podríamos cambiar columnas a sumar, convertir monedas, etc bajo la condición del SWITCH dentro de dax.

¡Ojala que esto les abra la mente para esta y otras soluciones!