Summary
In the KPI visual, when a measure uses Dynamic Format Strings (Model view → Format → Dynamic), Auto scaling for the Callout Value Display Units treats decimal/whole numbers differently than currency. Decimals are abbreviated (e.g., K/M), while currency callouts show full, unscaled values—even in the hundreds of millions—unless you manually pick “Thousands” or “Millions.” This is inconsistent with Card and new Card visuals, which apply dynamic formats more predictably. Please make Auto honor the dynamic format string and/or measure value for all types (including currency) so KPI behavior matches other visuals.
Why this matters
- Consistency: Dynamic format strings were introduced to avoid using FORMAT() (text) and keep measures numeric while letting visuals display different formats by context (currency, decimal, %, units). KPI’s current Auto scaling undermines that goal.
- Usability: Financial dashboards frequently compare Actual vs Budget in a single KPI. If Auto doesn’t abbreviate currency, callouts become unreadably long and inconsistent with Cards on the same page.
- Maintainability: Forcing manual “Thousands/Millions” breaks scenarios where different metrics (EFTSL counts vs. $ revenue) share a KPI but need different scaling depending on selection. This pushes authors back to brittle workarounds (wrapper measures, FORMAT(), or custom tooltips).
Repro steps (Nov 2025 desktop builds)
- Create a single Switch measure (numeric) that returns different base measures based on a slicer, e.g., counts vs. currency.
- In Model view, set Format → Dynamic for the measure; return currency strings for revenue and decimal strings for counts. (Per Microsoft Docs and blog guidance.)
- Place the measure in a KPI visual (Callout = measure; Target = budget measure with the same dynamic format). Set Callout Value → Display Units = Auto.
- Change the slicer from counts (decimal) to revenue (currency).
Actual: Counts are abbreviated (K/M); currency shows full numbers (e.g., $228,537,815.48) without K/M.
Expected: KPI Auto should abbreviate both numeric and currency consistently based on dynamic format strings / current value, similar to Card behavior.
What we observe today (evidence & prior reports)
- Dynamic format strings work and are documented to keep the measure numeric while changing how visuals render the value. Visuals should honor that expression.
- Community reports show KPI “Auto” units not working or only under narrow conditions (e.g., whole vs. decimal types, specific decimal places), with long‑standing threads noting inconsistent scaling behavior.
- Tutorials and guidance emphasize dynamic format strings for abbreviations (K/M) and currency without losing numeric type—this works in Cards but is inconsistent in KPI Auto.
Technical analysis (hypothesis)
- Auto scaling in KPI likely uses a rule set that depends on the static format category (currency vs. decimal) and does not re‑evaluate the dynamic format string expression or SELECTEDMEASURE() value when deciding whether to abbreviate.
- Cards have newer rendering logic that respects dynamic formats more consistently (including with the “new Card” GA announcement and display‑unit behavior), while KPI retains older scaling heuristics.
Requested enhancements (developer‑friendly)
Honor Dynamic Format Strings in KPI Auto
- Update KPI’s Auto scaling to evaluate the dynamic format string expression (and SELECTEDMEASURE()) the same way Card does, so abbreviations like K/M are applied when appropriate regardless of currency/decimal.
Expose a “Respect dynamic format” toggle
- Add a per‑visual option (KPI → Callout Value) like “Use dynamic format string for Auto display units”. When On, Auto follows the dynamic format logic (including localized strings like [$-en-AU]$#,0,,M). When Off, the current heuristic remains.
Support locale‑qualified currency abbreviation patterns
- Allow dynamic format strings such as [$-en-AU]$#,0,,M or pattern tokens for abbreviated units (K/M/B) so authors can control thousands/millions within the dynamic format—and ensure KPI doesn’t strip the symbol when abbreviating. (Docs already encourage locale‑qualified strings; please make KPI honor them.)
Align Tooltips & Axis/Callout scaling rules
- Ensure Tooltips, Callout, and (if present) trend line labels all apply the same rule set when dynamic format strings are used, so users don’t see conflicting formats between the callout and hover tooltips.
Document current behavior & guidance
- Update KPI docs to clarify how Auto interacts with dynamic format strings and provide recommended patterns (e.g., when to set Display Units = None/Thousands/Millions vs. rely on dynamic format strings).
Why not use workarounds?
- Manual “Thousands/Millions” forces the same scale for all metrics, breaking mixed scenarios (e.g., counts needing full precision, currency needing M).
- FORMAT() returns text, breaking numeric comparisons and KPI goal logic—exactly what dynamic format strings were created to avoid.
- Custom tooltips or wrapper measures add complexity and don’t fix the KPI’s Auto behavior at the callout.
Impact (real-world example)
In HR dashboards (e.g., employee FTE/employee Headcount counts (decimal or whole numbers) vs Salaries ($)), users compare Actual vs Budget in a KPI. With Auto:
- Counts show K/M (good),
- Currency shows full 9‑digit values (bad),
leading to inconsistent readability and stakeholder confusion, especially at executive level. Aligning KPI Auto with dynamic formats resolves this without measure duplication.
References
Closing
Request: Make KPI Auto Display Units honor Dynamic Format Strings (and measure values) the same way Card does—so currency and decimals both abbreviate appropriately without manual scaling. This will improve readability, consistency, and trust in financial KPI dashboards without forcing authors into fragile workarounds.
Happy to share a reproducible PBIX if needed.