Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Syndicate_Admin
Administrator
Administrator

Error de formato

Según la documentación, la función FORMAT toma como entrada "Una expresión de formato personalizado para números puede tener de una a tres secciones separadas por punto y coma". Si tres secciones, "La primera sección se aplica a valores positivos, la segunda a valores negativos y la tercera a ceros". Además, puede usar una coma como marcador de posición decimal. Todo esto está bien, y como está documentado, se comporta de manera muy similar al formato de Excel.

El problema es que cuando se usa una coma como marcador de posición decimal, las tres secciones ya no se aplican a los valores positivos y negativos. Si los valores positivos o negativos se evalúan a cero, se utiliza el formato cero en su lugar. Este comportamiento no está documentado y es contrario a las reglas de formato de Excel, que aplican estrictamente los formatos a números positivos y negativos independientemente del redondeo a cero.

Este es un problema importante porque los contadores y estadísticos saben que 0 vs. (0) vs. "-" en Excel significan cosas diferentes. El 0 es un número redondeado a cero, (0) redondeado a cero, y "-" es un cero "puro" sin redondeo. A medida que migramos informes a Power BI, nuestros usuarios rechazan Power BI porque insisten en tener estos formatos. Y no estoy deseando arreglar este lío.

Puede replicar esto con esta medida en Power BI:

Format bug = "Positive: " & FORMAT(1000000, "#,##0,,.0M;-#,##0,,.0M;-")
           & " Negative: " & FORMAT(-1000000, "#,##0,,.0M;-#,##0,,.0M;-")
           & " Zero: "     & FORMAT(0, "#,##0,,.M;-#,##0,,.M;-")

Da el resultado correcto de 3 formatos diferentes:

Rudz_0-1686858355743.png

Pero si los números positivos y negativos se redondean a cero, usan incorrectamente el formato cero:

Format bug = "Positive: " & FORMAT(1000, "#,##0,,M;-#,##0,,M;-")
           & " Negative: " & FORMAT(-1000, "#,##0,,M;-#,##0,,M;-")
           & " Zero: "     & FORMAT(0, "#,##0,,M;-#,##0,,M;-")

Rudz_1-1686858442445.png

O más descaradamente:

Format bug = "499,999 in millions = " & FORMAT(499999, "#,##0,,M;-#,##0,,M;0???")

Rudz_2-1686858543538.png

Este error debe corregirse o POR FAVOR actualice la documentación para describir este comportamiento sin sentido.

"La primera sección se aplica a los valores positivos, la segunda a los valores negativos y la tercera a los ceros, excepto cuando no lo hacen..."

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

Tenemos una tabla de KPI con formato complejo que no se puede crear con el objeto visual Nueva tarjeta. Nuestra solución consiste en generar HTML desde Excel y usar el objeto visual HTML. Cuando se incluye una medida en el HTML, aparece como un número sin formato, por lo que se necesita FORMAT. ¡Solo deseaba que funcionara correctamente!

Syndicate_Admin
Administrator
Administrator

Ah, ya veo, sí, si te estás conectando a un modelo remoto, lo ideal es que se fije allí.

Para lo que está haciendo, ¿tiene que devolver valores numéricos con formato dentro de una medida de texto?

Si solo necesita medidas numéricas, siempre puede crear medidas de nivel de informe que hagan referencia directa a las medidas originales, pero configuradas con la cadena de formato correcta.

Syndicate_Admin
Administrator
Administrator

Aquí está la solución con IF:

Format workaround = 
VAR _Pos = 1000
VAR _Neg = -1000
VAR _Zero = 0
RETURN "Positive: " & IF(_Pos>0, FORMAT(_Pos,"#,##0,,;(#,##0,,);0"),
                         IF(_Pos<0, FORMAT(_Pos,"#,##0,,;(#,##0,,);(0)"),"-"))
    & " Negative: " & IF(_Neg>0, FORMAT(_Neg,"#,##0,,;(#,##0,,);0"),
                         IF(_Neg<0, FORMAT(_Neg,"#,##0,,;(#,##0,,);(0)"),"-"))
    & " Zero: "     & IF(_Zero>0, FORMAT(_Zero,"#,##0,,;(#,##0,,);0"),
                         IF(_Zero<0, FORMAT(_Zero,"#,##0,,;(#,##0,,);(0)"),"-"))
Syndicate_Admin
Administrator
Administrator


@Rudz escribió:

Estoy trabajando en un informe delgado conectado a un modelo, por lo que cambiar los formatos significa esperar los cambios de modelo, y la función FORMAT me ayuda a tomar el control del formato en el informe. Pero para cumplir con este requisito, puedo esperar a que los cambios de modelo obtengan el #,##0;(#,##0);" -" parte hecha, y luego hacer la parte /1000000 donde estoy haciendo la función FORMAT y lograr lo mismo.


No importa. Esto no funciona. La corrección de errores es mi única respuesta con nuestra adición de declaraciones IF para manejar esto.

Syndicate_Admin
Administrator
Administrator

Si pudieras registrar esto como un error, ¡sería increíble!

Y gracias por señalar esto como una solución para mí:


@OwenAuger escribió:

La buena noticia es que las cadenas de formato (como la que publicó) parecen comportarse correctamente cuando se aplican como la cadena de formato de una medida numérica o columna.

Estoy trabajando en un informe delgado conectado a un modelo, por lo que cambiar los formatos significa esperar los cambios de modelo, y la función FORMAT me ayuda a tomar el control del formato en el informe. Pero para cumplir con este requisito, puedo esperar a que los cambios de modelo obtengan el #,##0;(#,##0);" -" parte hecha, y luego hacer la parte /1000000 donde estoy haciendo la función FORMAT y lograr lo mismo.

Syndicate_Admin
Administrator
Administrator

@Rudz - esto es realmente preocupante.

Lo probé yo mismo en dax.do (Azure Analysis Services) y Power BI Desktop, y veo exactamente el mismo comportamiento que ha descrito.

La buena noticia es que las cadenas de formato (como la que publicó) parecen comportarse correctamente cuando se aplican como la cadena de formato de una medida numérica o columna.

Sin embargo, comparto su frustración de que FORMAT no se comporte como está documentado, y por ahora tendremos que ser muy cautelosos al usarlo. Estoy feliz de registrar esto como un error mientras tanto.

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

Power BI Carousel June 2024

Power BI Monthly Update - June 2024

Check out the June 2024 Power BI update to learn about new features.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

Top Solution Authors