Formato dinámico con SWITCH en Power BI y Deneb

csalcedodatabi Power BI Deneb DAX
El editor de Deneb con el spec a la izquierda y el gráfico a la derecha. Abajo, el panel de datos muestra las tres columnas que llegan del modelo: el valor crudo, la columna __format con la cadena de formato de cada fila, y __formatted con el valor ya compuesto — $988.6 K donde el valor crudo dice 988627,73

En resumen — Si tu medida tiene formato dinámico en el modelo, Deneb ya te lo entrega resuelto fila a fila. No hay que repetir la lógica dentro del gráfico. Funciona desde hace cinco versiones y casi nadie lo usa.

📥 El proyecto de Power BI y el spec están gratis al final del artículo.

El problema

Montas un gráfico en Deneb y las etiquetas salen así:

2,218,753.38      988,627.73

El visual nativo de Power BI, al lado, muestra los mismos números así:

$2.2 M            $988.6 K

Mismo modelo, misma medida. Uno se lee, el otro no.

La solución es una línea

Cuando una medida tiene formato dinámico, Deneb añade dos columnas invisibles a tu conjunto de datos:

ColumnaQué trae
[tu medida]__formattedEl valor ya formateado: $2.2 M
[tu medida]__formatLa cadena de formato de esa fila, por si la necesitas

Apuntas la etiqueta a la primera y ya está:

La etiqueta
"text": { "field": "Ventas__formatted", "type": "nominal" }

Sin format, sin condicionales, sin repetir nada. El gráfico pinta lo que el modelo decidió.

Lo que va en el modelo

Aquí está la medida del ejemplo. Un SWITCH que elige el sufijo según la magnitud:

Formato dinámico de la medida
VAR _digitos =
  IFERROR( LEN( CONVERT( INT( ABS( SELECTEDMEASURE() ) ), STRING ) ), 0 )
VAR _sufijo =
  SWITCH(
      TRUE(),
      _digitos >= 13, "T",
      _digitos >= 10, "B",
      _digitos >= 7,  "M",
      _digitos >= 4,  "K",
      ""
  )
VAR _comas =
  REPT( ",", SWITCH( _sufijo, "T", 4, "B", 3, "M", 2, "K", 1, 0 ) )
RETURN
  IF( _digitos >= 2, "$#,#0" & _comas & ".0 " & _sufijo, "$#,##0.00" )

Nota

No necesitas un grupo de cálculo. Una medida normal con su formato dinámico basta. Y necesitas Power BI Desktop actualizado: si tu versión es vieja, el archivo ni siquiera abre.

La prueba

Mismos datos, dos paneles. A la izquierda el valor crudo; a la derecha, __formatted.

Comparación en Power BI: el panel izquierdo muestra valores crudos como 2,218,753.38 y 988,627.73; el derecho muestra los mismos valores como $2.2 M y $988.6 K

Fíjate en dos filas seguidas: $1.0 M y $988.6 K. Dos formatos distintos en el mismo gráfico. Eso es lo que un formato fijo no puede hacer.

Un detalle que casi todos copiamos mal

La fórmula que circula por ahí usa 12, 9, 6 y 4 dígitos como cortes. Con esos valores, un producto de $104.102 sale como $0.1 M — peor que el número crudo.

Sube cada corte en uno —13, 10, 7 y 4— y sale $104.1 K. El comentario del código original ya lo advertía; el valor publicado nunca se cambió.

Y no es nuevo

Esto no llegó con Deneb 2.0. Está en la documentación desde la versión 1.6, y ese apartado no ha cambiado ni una palabra desde entonces: nueve líneas, sin un solo ejemplo.

Así que si llevas años escribiendo formatos a mano dentro de tus gráficos, no llegaste tarde a nada. Nadie te contó que existía.

Pruébalo

El modelo es Contoso Retail y es público. Pon esa medida, proyecta una categoría, y apunta la etiqueta a __formatted.

Si el campo te llega vacío, casi siempre es una de dos: la medida no tiene formato dinámico, o tu Power BI está desactualizado.

Recursos

Descargar gratis los recursos de este artículo

  • El proyecto de Power BI con la medida y su formato dinámico ya montados
  • El spec de Deneb suelto, en JSON, para leerlo o pegarlo en otro informe sin abrir Power BI

Es un proyecto PBIP dentro de un .zip: descomprime y abre el archivo .pbip. El modelo es Contoso Retail, público, así que verás los mismos números de este artículo.

¿Te resultó útil este artículo?

Tu apoyo me permite seguir creando contenido de calidad.

¡Contáctame!