Grupos de cálculo en Power BI: su formato en Deneb

csalcedodatabi Power BI Deneb DAX
El editor de Deneb: a la izquierda el spec, a la derecha la tabla renderizada con el mismo total de ventas bajo cada elemento de cálculo — $19,903,678, $19,903.7 K y 100,00% — y abajo el panel de datos con las columnas Total Sales__format y Total Sales__formatted, donde se lee la cadena de formato que trae cada fila

En resumen — Cada elemento de un grupo de cálculo puede traer su propio formato. Deneb lo recibe resuelto fila a fila, así que la misma medida se lee en miles en una fila y en porcentaje en la siguiente. No hay que repetir esa lógica dentro del gráfico.

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

El caso

Un grupo de cálculo con tres elementos —el valor original, en miles, y porcentaje del total— aplicado a una sola medida.

En un visual nativo eso se ve bien solo. La pregunta es qué llega a Deneb.

Lo que llega al gráfico

Tabla con tres filas, una por elemento de cálculo, mostrando el valor crudo, el valor ya formateado y la cadena de formato de cada fila

La medida tiene un formato fijo, el de moneda. Y aun así dos de las tres filas no lo usan. Cada elemento impone el suyo.

No hay que creérselo. Deneb entrega ese formato en dos columnas de apoyo, y están a la vista en el panel de datos del editor:

Panel de datos del editor de Deneb con cuatro columnas: Formato, Total Sales con el valor crudo, Total Sales__format con la cadena de formato de cada fila, y Total Sales__formatted con el valor ya escrito

La contrabarra delante del $ no es un error: así marca Power BI que el símbolo va literal.

Apuntas la etiqueta a la que ya viene escrita y se acabó:

La etiqueta
"text": { "field": "Total Sales__formatted", "type": "nominal" }

Lo que va en el modelo

Solo el elemento que quiere otro formato lo declara. El primero no declara nada y por eso hereda el de la medida.

Los tres elementos de cálculo
calculationItem 'Valor original' = SELECTEDMEASURE()

calculationItem 'En miles' = DIVIDE( SELECTEDMEASURE(), 1000 )
  formatStringDefinition = "\$#,0.0 ""K"""

calculationItem 'Porcentaje del total' =
  DIVIDE( SELECTEDMEASURE(), CALCULATE( SELECTEDMEASURE(), ALLSELECTED() ) )
  formatStringDefinition = "0.00%"

Dos cosas que te van a morder

Nota

La medida tiene que ser explícita. Un grupo de cálculo nunca se aplica a una medida implícita —esa que sale de arrastrar una columna numérica al visual—. Si tu modelo no obliga a usar medidas explícitas, no pasa nada de nada y parece que falla Deneb. No falla: el grupo ni siquiera entró.

Y el porcentaje del total da 100,00%, que parece un error y no lo es. La única categoría del gráfico es la columna del propio grupo de cálculo, así que no hay nada respecto de lo cual repartir: cada fila es el 100% de sí misma. En un gráfico real, con una categoría de verdad en el eje, los porcentajes se reparten como esperas.

Pruébalo

El modelo es Contoso Retail y es público. El archivo de este artículo trae el grupo de cálculo ya montado y la página del escenario lista.

Proyecta la columna del grupo como categoría junto a una medida explícita, y apunta la etiqueta a __formatted. Verás cambiar el formato entre una fila y la siguiente sin haber escrito una sola regla dentro del gráfico.

Recursos

Descargar gratis los recursos de este artículo

  • El proyecto de Power BI con cuatro escenarios de grupos de cálculo, no solo el de este artículo
  • 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. Al abrirlo Power BI pedirá procesar los grupos de cálculo — es esperable, basta con actualizar.

¿Te resultó útil este artículo?

Tu apoyo me permite seguir creando contenido de calidad.

¡Contáctame!