FORMAT Function in DAX

When building Power BI dashboards, you often need numbers, dates, or percentages to look professional and readable. The FORMAT function in DAX allows you to convert numeric or date values into text with your desired formatting, while keeping the original value intact for calculations.

Format Function in DAX

Syntax

FORMAT(<value>, <format_string>[, <locale_name>])
  • value → A numeric, date, or time value (can be an expression or measure).
  • format_string → Standard or custom .NET format string (e.g., “C”, “0.00”, “dd-mmm-yyyy”).
  • locale_name (optional) → Supported in Power BI. Examples: “en-US”, “hi-IN”.

⚠️ Returns text, not numeric values. Use for display purposes (cards, tables, tooltips).


1. Formatting Numbers

Example 1: Currency

FormattedCurrency = FORMAT(1234567, "C")
  • Output (en-US locale): $1,234,567.00
  • Output (hi-IN locale): ₹12,34,567.00

Example 2: Currency with 2 Decimals

FormattedCurrency2 = FORMAT(1234.567, "C2")
  • Output: $1,234.57

Example 3: Number with 2 Decimals

FormattedNumber = FORMAT(1234.567, "0.00")
  • Output: 1234.57

Example 4: Percentage

FormattedPercent = FORMAT(0.875, "0.0%")
  • Output: 87.5%

Example 5: Compact Format (Millions)

FormattedM = FORMAT(1523000/1000000, "0.0") & "M"
  • Output: 1.5M

Also Read: Time Intelligence Functions in DAX


2. Formatting Dates

Example 6: Day-Month-Year

FormattedDate1 = FORMAT(TODAY(), "dd-mm-yyyy")
  • Output: 24-09-2025

Example 7: Long Date

FormattedDate2 = FORMAT(TODAY(), "dddd, mmmm dd, yyyy")
  • Output: Wednesday, September 24, 2025

Example 8: Month & Year

FormattedDate3 = FORMAT(TODAY(), "mmm yyyy")
  • Output: Sep 2025

Example 9: Quarter & Year

FormattedDate4 = FORMAT(TODAY(), "\Qq yyyy")
  • Output: Q3 2025

Example 10: Weekday Name

FormattedDate5 = FORMAT(TODAY(), "dddd")
  • Output: Wednesday

Read More: CALENDAR Function in DAX


3. Formatting Time

Example 11: 24-hour time

FormattedTime1 = FORMAT(NOW(), "HH:mm")
  • Output: 14:35

Example 12: 12-hour time with AM/PM

FormattedTime2 = FORMAT(NOW(), "hh:mm AM/PM")
  • Output: 02:35 PM

Example 13: Time with seconds

FormattedTime3 = FORMAT(NOW(), "hh:mm:ss")
  • Output: 02:35:45

4. Combining Text & Values

Example 14: Dynamic Sales Title

SalesTitle = "Total Sales for " & FORMAT(TODAY(), "mmmm yyyy")
  • Output: Total Sales for September 2025

Example 15: Currency & Month

TotalSalesFormatted = "Total Sales: " & FORMAT([Total Sales], "C", "en-US")
  • Output: Total Sales: $1,234,567.00

Example 16: Year & Profit

YearProfit = "Year " & FORMAT(YEAR(TODAY()), "0000") & ": " & FORMAT([Profit], "C", "en-US")
  • Output: Year 2025: $875,000.00

5. Locale-Based Formatting

Power BI allows explicit locale formatting, very useful for multi-country dashboards.

-- US format
FORMAT(1234567, "C", "en-US")   -- $1,234,567.00

-- Indian format
FORMAT(1234567, "C", "hi-IN")   -- ₹12,34,567.00

6. Real-Life Use Cases for Data Analysts

  1. Finance Dashboards
    Show revenue, costs, and profit in readable currency format.
  2. Sales Performance
    Display KPIs like Conversion Rate in % format and Revenue in Millions/Lakhs.
  3. Attendance Reports
    Show weekday names from employee check-in dates.
  4. Management Cards
    Present metrics with dynamic text: "Total Sales for September 2025 = $1,234,567"

7. Limitations of Format Function in Power BI

  • Always returns text → can’t do numeric operations on formatted measure.
  • Large datasets + multiple FORMAT() calls can affect performance.
  • Some Excel-style shortcuts (like "0.0,,M") do not work — you need manual division.

8. Best Practices

  1. Use FORMAT() for display only, not calculations.
  2. Aggregate column values before formatting inside measures.
  3. Use locale parameter in Power BI for multi-country reporting.
  4. For compact formatting (K/M/Lakh), divide manually and append suffix.
  5. Keep numeric measures separate from formatted text measures for charts.

9. Quick Reference Table

PurposeDAX ExampleOutput
CurrencyFORMAT(1234567,"C")$1,234,567.00
PercentFORMAT(0.875,"0.0%")87.5%
Fixed decimalsFORMAT(1234.567,"0.00")1234.57
Day-Month-YearFORMAT(TODAY(),"dd-mm-yyyy")24-09-2025
Month-YearFORMAT(TODAY(),"mmm yyyy")Sep 2025
WeekdayFORMAT(TODAY(),"dddd")Wednesday
12-hour timeFORMAT(NOW(),"hh:mm AM/PM")02:35 PM
Compact MFORMAT([Sales]/1000000,"0.0")&"M"1.5M
Locale USFORMAT(1234567,"C","en-US")$1,234,567.00
Locale IndiaFORMAT(1234567,"C","hi-IN")₹12,34,567.00

10. Advanced Tips for Using FORMAT() in Power BI

While FORMAT() is simple to use, there are some advanced tricks that make it extremely useful for Data Analysts and MIS professionals.

a) Combine Multiple Measures in Text

You can dynamically create sentences or KPI statements using multiple measures:

SalesKPI = "Total Sales: " & FORMAT([Total Sales], "C", "en-US") & 
           " | Profit Margin: " & FORMAT([Profit Margin], "0.0%") &
           " | Avg Sale per Customer: " & FORMAT([Avg Sale], "0.00")

Output:
Total Sales: $1,234,567 | Profit Margin: 12.5% | Avg Sale per Customer: 105.25

This approach allows you to create card visuals or tooltips that combine multiple metrics in a human-readable format.


b) Conditional Formatting with FORMAT()

You can use FORMAT() together with conditional DAX logic to display different formats based on thresholds:

RevenueStatus = IF([Revenue] > 1000000,
                   FORMAT([Revenue], "C", "en-US") & " ✅",
                   FORMAT([Revenue], "C", "en-US") & " ⚠️")
  • This shows a checkmark for high revenue and a warning sign for low revenue, which is very useful in dashboards.

c) Handling Dates Dynamically

Suppose you want to show the latest sale date in a readable format:

LatestSaleDate = "Last Sale: " & FORMAT(MAX(Sales[SaleDate]), "dddd, mmm dd, yyyy")
  • Output: Last Sale: Wednesday, Sep 24, 2025
  • This can be used in title cards, slicers, or reports, giving management an instant overview.

d) Combine FORMAT() with Iterators

You can combine FORMAT() with iterator functions like SUMX() for more advanced calculations:

HighValueSales = 
SUMX(
    FILTER(Sales, Sales[Amount] > 100000),
    FORMAT(Sales[Amount], "C", "en-US")
)
  • This converts only the high-value sales into formatted text, which can then be displayed in table visuals.

e) Dynamic Locale Switching

If you have a dashboard for multiple countries, you can dynamically change the locale using a disconnected table for region selection:

SelectedCurrency = FORMAT([Total Sales], "C", SELECTEDVALUE(Regions[Locale]))
  • This automatically switches currency symbols and number grouping based on user selection, enhancing interactive dashboards.

Conclusion

The FORMAT function in Power BI DAX is essential for presentation-ready dashboards. It helps convert raw numbers, percentages, dates, and times into readable, professional formats for reports and management cards.

Spread the love

Leave a Comment

Your email address will not be published. Required fields are marked *

Translate »
Scroll to Top