Forum Discussion
Selectedmeasureformatstring DAX Calculation Item
- Anonymous2 years ago
Hi MrRong ,
To troubleshoot this problem, this function can be used in the dynamic format of the MEASURE. This DAX function returns the format string set for the currently evaluated metric. You can then use conditional logic to set the format string dynamically based on SELECTEDMEASUREFORMATSTRING.To solve this problem, this function can be used in the dynamic format of the MEASURE. This DAX function returns the format string set for the currently evaluated metric. You can then use conditional logic to set the format string dynamically based on SELECTEDMEASUREFORMATSTRING.VAR CurrentFormatString = SELECTEDMEASUREFORMATSTRING() VAR CalcType = SELECTEDVALUE ( PL_header[CalcType] ) RETURN SWITCH ( TRUE(), CalcType = 1, [PL_additive_total_Actual], CalcType = 2, [PL_running_total_Actual], CalcType = 3, [PL_%_of_Revenue_Actual], CalcType = 4, [PL_%_of_running_Total_Actual] CurrentFormatString )For more information on how to use , please refer to the official documentation
SELECTEDMEASUREFORMATSTRING function (DAX) - DAX | Microsoft Learn
For more information on calculating group formats, you can refer to these documents
Dynamic format strings with calculation groups - SQLBI
Controlling Format Strings in Calculation Groups - SQLBIBest regards
Albert He
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly
- 2 years ago
Hi again MrRong
I see Anonymous has also replied but I'll reply directly to your post.
1. Measure looks good 🙂
2. The measure's dynamic format string looks good 🙂
3. The calculation items don't look right.
- The calculation item expressions for Actual, Actual PY and Variance PY should remain unchanged from your original version, i.e. including SELECTEDMEASURE() within the expressions.
- However, you should enable Dynamic format string for each calculation item and set it to SELECTEDMEASUREFORMATSTRING().
- Generally speaking, it would only make sense to use SELECTEDMEASUREFORMATSTRING() within the Format string expression, not the calculation item expression itself.
- The overall purpose of my suggestions were to ensure the measure (with calculation items applied) returns numerical values, and the formatting is controlled solely by format strings.
Sample screenshots:
Hi MrRong
Yes, I believe you're correct in identifying the issue, and part of the solution (dynamic format string) 🙂
The issue is:
- PL_Total_Amount_Actual_2 returns a text value for CalcType = 3 or CalcType =4.
- In this case, when the calculation item "Variance PY" is applied to this measure, the text values containing the "%" character cannot be cast as numbers, so an error is returned.
My recommendation would be to:
1. Adjust the PL_Total_Amount_Actual_2 measure so that it always returns a numerical value:
PL_Total_Amount_Actual_2 =
VAR CalcType =
SELECTEDVALUE ( PL_header[CalcType] )
VAR DisplayDetailCode =
SELECTEDVALUE ( PL_header[Detail] )
VAR isSubHeaderVisible =
ISFILTERED ( PL_accounts[Subheader] )
VAR Result =
SWITCH (
TRUE (),
isSubHeaderVisible = TRUE ()
&& DisplayDetailCode = 0, BLANK (),
CalcType = 1, [PL_additive_total_Actual],
CalcType = 2, [PL_running_total_Actual],
CalcType = 3, [PL_%_of_Revenue_Actual],
CalcType = 4, [PL_%_of_running_Total_Actual]
)
RETURN
Result
2. Give the PL_Total_Amount_Actual_2 measure a dynamic format string similar to this:
VAR DefaultFormat = "#,##0;(#,##0);-" -- change as needed
VAR PercentageFormat = "0.00%"
VAR CalcType =
SELECTEDVALUE ( PL_header[CalcType] )
VAR DisplayDetailCode =
SELECTEDVALUE ( PL_header[Detail] )
VAR isSubHeaderVisible =
ISFILTERED ( PL_accounts[Subheader] )
VAR Result =
SWITCH (
TRUE (),
-- This first condition can be omitted if you like, since measure is blank
isSubHeaderVisible = TRUE () && DisplayDetailCode = 0, BLANK (),
CalcType IN { 1, 2 }, DefaultFormat,
CalcType IN { 3, 4 }, PercentageFormat
)
RETURN
Result
3. For the calculation group, ensure that each calculation item has format string expression
SELECTEDMEASUREFORMATSTRING ()
Does this fix it for you?
Please post back if needed.
Regards