Heredar el formato de la medida en Power BI con Deneb
En resumen — Un elemento de cálculo con formato fijo se lo impone a todas tus medidas, aunque no compartan unidad.
SELECTEDMEASUREFORMATSTRING()hace que cada una conserve el suyo, y Deneb lo recibe ya resuelto.
📥 El proyecto de Power BI y el spec están gratis al final del artículo.
El problema aparece al reusar el elemento
En el artículo anterior el grupo de cálculo se aplicaba a una sola medida y todo cuadraba. Este empieza donde aquel termina: qué pasa cuando lo aplicas a la segunda.
Un elemento «en miles» es útil: divide entre mil y añade una K. Le pones un formato fijo, #,0.0 "K", y funciona.
Funciona mientras todas tus medidas compartan formato. En cuanto lo aplicas a una medida de dinero, le quita el símbolo de moneda.
Mira la fila de Ventas. Con el formato fijo el importe sale como 19,903.7 K y ha perdido el símbolo de moneda: deja de leerse como dinero. Con el heredado sale $19,904 K, porque parte del formato que la medida ya tenía.
Lo que se ve por dentro
El formato que Deneb recibe para cada medida lo explica:
| Elemento | Ventas | Unidades | Margen % |
|---|---|---|---|
| Original | \$#,0 | #,0 | 0.0% |
| Miles (formato fijo) | #,0.0 "K" | #,0.0 "K" | #,0.0 "K" |
| Miles (formato heredado) | \$#,0 "K" | #,0 "K" | 0.0% "K" |
En la fila del formato fijo las tres cadenas son idénticas. El elemento las aplasta al mismo molde y pierde la moneda y el porcentaje por el camino.
En la de abajo cada una vuelve a la suya, con la K añadida al final.
La función que lo arregla
SELECTEDMEASUREFORMATSTRING() devuelve el formato que ya tenía la medida. Se concatena lo que quieras añadir y listo:
calculationItem 'Miles (formato fijo)' = DIVIDE( SELECTEDMEASURE(), 1000 )
formatStringDefinition = "#,0.0 ""K"""
calculationItem 'Miles (formato heredado)' = DIVIDE( SELECTEDMEASURE(), 1000 )
formatStringDefinition = SELECTEDMEASUREFORMATSTRING() & " ""K""" La diferencia entre las dos líneas es toda la diferencia entre un grupo de cálculo que sirve para una medida y otro que sirve para todas.
Nota
Heredar no arregla lo que la operación rompe. Dividir un porcentaje entre mil sigue dando un número sin sentido: 0.0% K. Lo que se conserva es el formato, no la lógica. Si un elemento no debe aplicarse a ciertas medidas, eso se resuelve en el propio DAX.
Pruébalo
El modelo es Contoso Retail y es público. El archivo de este artículo trae el grupo de cálculo montado y la página del escenario lista.
Proyecta la columna del grupo junto a dos medidas que no compartan unidad —una de dinero y un porcentaje— y apunta las etiquetas a __formatted. La diferencia entre las dos versiones del elemento se ve sin buscarla.
Si montas el visual desde cero en Deneb 2.0, ten presente que __format y __formatted vienen apagados en un visual nuevo: así se activan. El archivo de descarga ya los trae activados.
Recursos
Descargar gratis los recursos de este artículo
- El proyecto de Power BI con el grupo de cálculo y las tres medidas de unidades distintas
- 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 archivo no trae datos para pesar poco: al abrirlo pulsa Actualizar y los carga de Contoso Retail en unos segundos.
¿Te resultó útil este artículo?
Tu apoyo me permite seguir creando contenido de calidad.