image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Júlio Droszczak
Júlio Droszczak23/09/2024 23:52
Compartilhe
Nexa - Análise Avançada de Imagens e Texto com IA na AWSRecomendados para vocêNexa - Análise Avançada de Imagens e Texto com IA na AWS

🚀 DAX: Usando a Função FORMAT para Formatação de Valores 🚀

  • #Power BI

Olá pessoal, compartilho aqui com vocês estas referências sobre formatação no Power BI.

Júlio César Droszczak - Specialist Data Analyst Engineer

A função FORMAT no DAX é uma ferramenta poderosa para converter valores em texto com um formato especificado. Isso permite exibir números, datas, ou horas de maneira customizada, facilitando a leitura e compreensão das informações em relatórios.

 

🌟 Sintaxe da Função FORMAT:

FORMAT(<Valor>, <Formato> [, <NomeDoLocal>])

 

Parâmetros:

  • Valor: Um número ou fórmula que avalie um valor numérico.
  • Formato: A string que define o formato desejado.
  • NomeDoLocal (Opcional): Nome da localidade para formatação específica de acordo com a cultura do usuário.

Resultado: Sempre uma string formatada de acordo com o formato especificado. Se o valor for BLANK, a função retorna uma string vazia.

🧠 Observações Importantes:

  • Os formatos de número suportados na função DAX FORMAT são baseados no Visual Basic (OLE Automation) e não no .NET Framework. Isso significa que algumas abreviações como "p" para percentagem não são suportadas.
  • Caso você precise exibir um texto literal, use aspas duplas dentro da string de formato.
  • A configuração de nomes de dias e meses depende das configurações regionais do seu arquivo ou base de dados.

💡 Exemplo 01:

Usando FORMAT para formatação de percentagens, moedas e datas.

EVALUATE
{
  ( "Percent",      FORMAT (                0.742, "Percent" )        ),
  ( "Currency (1)", FORMAT (             1234.567, "$#,0.00" )        ),
  ( "Currency (2)", FORMAT (             1234.567, """US$"" #,0.00" ) ),
  ( "Date (1)",     FORMAT ( DATE ( 2019, 3, 28 ), "yyyy-mm-dd" )     ),
  ( "Date (2)",     FORMAT ( DATE ( 2019, 3, 28 ), "m/d/yy" )         ),
  ( "Date (Q)",     FORMAT ( DATE ( 2019, 3, 28 ), "\QQ yyyy" )       )
}

image

 

💡 Exemplo 02:

Usando FORMAT com strings de formato predefinidas para números.

EVALUATE
{
  ( "General Number",  FORMAT( 12345.67, "General Number" )  ),
  ( "Currency"      ,  FORMAT( 12345.67, "Currency"       )  ),
  ( "Fixed"         ,  FORMAT( 12345.67, "Fixed"          )  ),
  ( "Standard"      ,  FORMAT( 12345.67, "Standard"       )  ),
  ( "Percent"       ,  FORMAT( 12345.67, "Percent"        )  ),
  ( "Scientific"    ,  FORMAT( 12345.67, "Scientific"     )  ),
  ( "True/False"    ,  FORMAT( TRUE,     "True/False"     )  ),
  ( "On/Off"        ,  FORMAT( FALSE,    "On/Off"         )  ),
  ( "Yes/No"        ,  FORMAT( TRUE,     "Yes/No"         )  )
}

image

 

💡 Exemplo 03:

Quando o valor for BLANK, FORMAT retornará uma string vazia.

EVALUATE
{
  ( "General Number",  FORMAT ( BLANK (), "General Number" ) ),
  ( "Currency"      ,  FORMAT ( BLANK (), "Currency"       ) ),
  ( "Fixed"         ,  FORMAT ( BLANK (), "Fixed"          ) ),
  ( "Standard"      ,  FORMAT ( BLANK (), "Standard"       ) ),
  ( "Percent"       ,  FORMAT ( BLANK (), "Percent"        ) ),
  ( "Scientific"    ,  FORMAT ( BLANK (), "Scientific"     ) ),
  ( "True/False"    ,  FORMAT ( BLANK (), "True/False"     ) ),
  ( "On/Off"        ,  FORMAT ( BLANK (), "On/Off"         ) ),
  ( "Yes/No"        ,  FORMAT ( BLANK (), "Yes/No"         ) )
}

image

 

💡 Exemplo 04:

Usando seções personalizadas para valores positivos, negativos e zero.

EVALUATE
{
  ( "Positive",  FORMAT (  1980.126, "#,0.00" ) ),
  ( "Negative",  FORMAT ( -1980.1  , "#,0.00" ) ),
  ( "Zero",      FORMAT (     0    , "#,0.00" ) ),
  ( "Blank",     FORMAT ( BLANK () , "#,0.00" ) )
}
 
EVALUATE
{
  ( "Positive",  FORMAT (  1980.126, "#,0.00;(#,0.00)" ) ),
  ( "Negative",  FORMAT ( -1980.1  , "#,0.00;(#,0.00)" ) ),
  ( "Zero",      FORMAT (     0    , "#,0.00;(#,0.00)" ) ),
  ( "Blank",     FORMAT ( BLANK () , "#,0.00;(#,0.00)" ) )
}
 
EVALUATE
{
  ( "Positive",  FORMAT (  1980.12, "#,#.##;(#,#.##);-" ) ),
  ( "Negative",  FORMAT ( -1980.12, "#,#.##;(#,#.##);-" ) ),
  ( "Zero",      FORMAT (     0   , "#,#.##;(#,#.##);-" ) ),
  ( "Blank",     FORMAT ( BLANK (), "#,#.##;(#,#.##);-" ) )
}

image

 

💡 Exemplo 05:

Formatos predefinidos para Data e Hora.

DEFINE
  VAR D  = DATE ( 2021, 1, 2 )
  VAR T  = TIME ( 15, 30, 0 )
  VAR DT = D + T
EVALUATE
{
  ( "General Date",  FORMAT ( DT, "General Date" ) ),
  ( "Long Date"   ,  FORMAT ( DT, "Long Date"    ) ),
  ( "Medium Date" ,  FORMAT ( DT, "Medium Date"  ) ),
  ( "Short Date"  ,  FORMAT ( DT, "Short Date"   ) ),
  ( "Long Time"   ,  FORMAT ( DT, "Long Time"    ) ),
  ( "Medium Time" ,  FORMAT ( DT, "Medium Time"  ) ),
  ( "Short Time"  ,  FORMAT ( DT, "Short Time"   ) )
}

image

 

💡 Exemplo 06:

Formatando datas e horas personalizadas.

DEFINE
  VAR D  = DATE ( 2020, 1, 2 )
  VAR T  = TIME ( 15, 30, 0 )
  VAR DT = D + T
EVALUATE
{
  ( "dd/mm/yyyy"   ,  FORMAT ( DT, "dd/mm/yyyy" ) ),
  ( "hh:nn:ss"     ,  FORMAT ( DT, "hh:nn:ss"   ) ), -- "nn" for minutes
  ( "hh:mm:ss"     ,  FORMAT ( DT, "hh:mm:ss"   ) ), -- "mm" works too, if hh before
  ( "c (full)"     ,  FORMAT ( DT, "c"          ) ),
  ( "c (Date only)",  FORMAT ( D,  "c"          ) ),
  ( "c (Time only)",  FORMAT ( T,  "c"          ) )
}

image

 

💡 Exemplo 07:

Calculando a duração de eventos.

DEFINE
  VAR StartEvent = DATE ( 2020, 1, 2 ) + TIME ( 15, 30, 0 )
  VAR EndEvent = DATE ( 2020, 1, 4 ) + TIME ( 6, 18, 42 )
  VAR DurationEvent = EndEvent - StartEvent
EVALUATE
{
  FORMAT ( INT ( DurationEvent ), "0:" ) & FORMAT ( DurationEvent, "hh:nn:ss" )
}    

image

 

💡 Exemplo 08:

Usando "m" para diferentes tipos de mês.

DEFINE
  VAR D = DATE ( 2020, 1, 2 )
EVALUATE
{
  ( "m"      ,  FORMAT ( D, "m"      ) ),   -- 1 or 2 digits
  ( "mm"     ,  FORMAT ( D, "mm"     ) ),   -- always 2 digits
  ( "mmm"    ,  FORMAT ( D, "mmm"    ) ),   -- short day of month
  ( "mmmm"   ,  FORMAT ( D, "mmmm"   ) )    -- long day of month
}

image

 

💡 Exemplo 09:

Usando "d" para diferentes tipos de dia.

DEFINE
  VAR D = DATE ( 2020, 1, 9 )
EVALUATE
{
  ( "d"      ,  FORMAT ( D, "d"      ) ),   -- 1 or 2 digits
  ( "dd"     ,  FORMAT ( D, "dd"     ) ),   -- always 2 digits
  ( "ddd"    ,  FORMAT ( D, "ddd"    ) ),   -- short day of week
  ( "dddd"   ,  FORMAT ( D, "dddd"   ) ),   -- long day of week
  ( "ddddd"  ,  FORMAT ( D, "ddddd"  ) ),   -- short date
  ( "dddddd" ,  FORMAT ( D, "dddddd" ) )    -- long date
}    

image

 

💡 Exemplo 10:

Formatando números e datas de acordo com a localidade.

EVALUATE {
  FORMAT( dt"2020-12-15T12:30:59", BLANK(), "en-US" ),
  FORMAT( dt"2020-12-15T12:30:59", BLANK(), "en-GB" ), 
  FORMAT( dt"2020-12-15T12:30:59", "mm/dd/yyyy", "en-GB" ),
  FORMAT( dt"2020-12-15T12:30:59", "dd mmmm yyyy", "en-US" ),
  FORMAT( dt"2020-12-15T12:30:59", "dd mmmm yyyy", "pt-BR" ),
  FORMAT( dt"2020-12-15T12:30:59", "dd mmmm yyyy", "ru-RU" ),
  FORMAT( 1234.567, "#,0.00", "en-US" ), -- Use comma as thousand separator and dot as decimal separator
  FORMAT( 1234.567, "#,0.00", "de-DE" )  -- Use dot as thousand separator and comma as decimal separator
}

image

 

💡 Exemplo 11:

Usando formatação para grandes números.

EVALUATE
VAR BigNumber = 103456789102
RETURN
  {
      FORMAT ( BigNumber, "$#,0" ),        -- Units
      FORMAT ( BigNumber, "$#,0,.0#K" ),   -- Thousand
      FORMAT ( BigNumber, "$#,0,,.0#M" ),  -- Million
      FORMAT ( BigNumber, "$#,0,,,.0#B" ), -- Billion
      FORMAT ( BigNumber, "$#,0,,,,.0#T" ) -- Trillion
  }

image

 

💡 Exemplo 12:

Formatação dinâmica de valores grandes.

DEFINE
  TABLE Numbers = { 103, 10345, 103456, 1034567, 103456789, 134897891, 103456789102, 103499789102, 1034567891023 }
  MEASURE Numbers[SkipThousands] =
      VAR CurrentNumber =
          SELECTEDVALUE ( Numbers[Value] )
      VAR LogRatio =
          IF ( CurrentNumber > 0, DIVIDE ( LOG ( CurrentNumber ), LOG ( 1000 ) ) )
      RETURN
          ROUNDDOWN ( DIVIDE ( LOG10 ( CurrentNumber ), 3 ), 0 )
  MEASURE Numbers[ValueFormatString] =
      SWITCH (
          [SkipThousands],
          0, "$#,0",       -- Integer number
          1, "$#,0,.0#K",  -- Thousand
          2, "$#,0,,.0#M", -- Million
          3, "$#,0,,,.0#B", -- Billion
          "$#,0,,,,.0#T"   -- Trillion
      )
EVALUATE
ADDCOLUMNS (
  Numbers,
  "Formatted Value", FORMAT ( Numbers[Value], [ValueFormatString] ),
  "Format String", [ValueFormatString]
)

image

 

💡 Dicas Extras:

  • O argumento opcional LocaleName foi introduzido em 2022, permitindo que você adapte a formatação com base na cultura do usuário.
  • Para formatar durações que envolvem dias e horas, use duas funções FORMAT para lidar corretamente com ambos os tipos de dados.

🚀 Aproveite todo o poder da função FORMAT no DAX e deixe seus relatórios mais claros, organizados e visualmente agradáveis!

 

Link documentação de referencia: https://dax.guide/format/

Vídeo de referência: https://youtu.be/1JSwrX3xAZE

Compartilhe
Recomendados para você
Suzano - Análise de Dados com Power BI
Microsoft Certification Challenge #3 DP-100
Decola Tech 2025
Comentários (0)
Recomendados para você