Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Fundraising staff at my organization are required to maintain a balanced portfolio of prospects based on set percentages for each status level. Here are those levels and percentanges:
Qualification 15%
Cultivation 45%
Solicitation 25%
Stewardship 15%
When they are 10% below or above any expected level I want the percentage to change to a red font color in my matrix visual.
I have set this up with the following table and measures and it seems to be working for the most part. However there are figures that should be red but are not, and vice versa.
Any help in resolving this issue would be greatly appreciated. Thanks!
ExpectedLevels = DATATABLE(
"Prospect Status", STRING,
"Expected Value", DOUBLE,
{
{"2. Qualification", 15.0},
{"3. Cultivation", 45.0},
{"4. Solicitation", 25.0},
{"5. Stewardship", 15.0}
}
)
Color Status =
VAR SelectedStatus = SELECTEDVALUE(CnPr[CnPr_Status])
VAR ExpectedLevel = LOOKUPVALUE(ExpectedLevels[Expected Value], ExpectedLevels[Prospect Status], SelectedStatus)
VAR PercentageValue = [Percentage of Status]
RETURN
IF(
ABS(PercentageValue - ExpectedLevel) >= 10,
"#FF0000", // Red for deviations of 10 percentage points or more
BLANK() // No color formatting for other cases
)
Percentage of Status =
DIVIDE(
COUNT(CnPr[CnPr_Status]),
CALCULATE(COUNT(CnPr[CnPr_Status]), ALLEXCEPT(CnRelSol_1, CnRelSol_1[CnRelSol_1_Name]))
) * 100
Solved! Go to Solution.
Hi, @dreader
You can try the following methods.
ExpectedLevels = DATATABLE(
"Prospect Status", STRING,
"Expected Value", DOUBLE,
{
{"2. Qualification", 0.15},
{"3. Cultivation", 0.45},
{"4. Solicitation", 0.25},
{"5. Stewardship", 0.15}
}
)
Column:
Expect = LOOKUPVALUE(ExpectedLevels[Expected Value],ExpectedLevels[Prospect Status],[Status])
Color Measure = SWITCH(TRUE(),
SUM('Table'[Value])>SUM('Table'[Expect])+0.1,"Red",
SUM('Table'[Value])<SUM('Table'[Expect])-0.1,"Red")
Result:
Is this the result you expected?
Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @Anonymous , Thank you for your suggestion. This is very helpful and I think it might work. However, I need a little extra help in creating the Value measure or column. I'm getting that value visually by applying the Show value as Percent of Row Total to the Count of Status field. Thanks!
Hi @dreader ,
The issue with your matrix visual may come from filter context or data mismatches. Ensure CnPr[CnPr_Status] is filtered to a single value; otherwise, SELECTEDVALUE may return BLANK(). Replace it with HASONEVALUE for reliability. Verify that CnPr[CnPr_Status] matches ExpectedLevels[Prospect Status] exactly, or standardize using TRIM and UPPER. Include error handling in the Color Status measure to avoid issues when PercentageValue or ExpectedLevel is BLANK(). Lastly, check your conditional formatting settings to confirm the Color Status measure is applied.
DAX Formulas:
Color Status:
Color Status =
VAR SelectedStatus =
IF(
HASONEVALUE(CnPr[CnPr_Status]),
VALUES(CnPr[CnPr_Status]),
BLANK()
)
VAR ExpectedLevel =
LOOKUPVALUE(
ExpectedLevels[Expected Value],
ExpectedLevels[Prospect Status],
TRIM(UPPER(SelectedStatus))
)
VAR PercentageValue = [Percentage of Status]
RETURN
IF(
NOT ISBLANK(PercentageValue) && NOT ISBLANK(ExpectedLevel) &&
ABS(PercentageValue - ExpectedLevel) >= 10,
"#FF0000", // Red for deviations of 10 percentage points or more
BLANK() // No color formatting for other cases
)
Percentage of Status:
Percentage of Status =
DIVIDE(
COUNT(CnPr[CnPr_Status]),
CALCULATE(COUNT(CnPr[CnPr_Status]), ALLSELECTED(CnRelSol_1[CnRelSol_1_Name]))
) * 100
These updates should address any discrepancies in your matrix visual. Let me know if you need further clarification!
Best regards,
Hi @DataNinja777 , Thanks for your detailed response! Much appreciated. I implemented your suggestions however I'm now getting more figures that should be in red and vice versa. I've highlighted in attached screenshot which ones are not correct. Any idea why I would get these results or any other suggestions I can try?
Hi, @dreader
You can try the following methods.
ExpectedLevels = DATATABLE(
"Prospect Status", STRING,
"Expected Value", DOUBLE,
{
{"2. Qualification", 0.15},
{"3. Cultivation", 0.45},
{"4. Solicitation", 0.25},
{"5. Stewardship", 0.15}
}
)
Column:
Expect = LOOKUPVALUE(ExpectedLevels[Expected Value],ExpectedLevels[Prospect Status],[Status])
Color Measure = SWITCH(TRUE(),
SUM('Table'[Value])>SUM('Table'[Expect])+0.1,"Red",
SUM('Table'[Value])<SUM('Table'[Expect])-0.1,"Red")
Result:
Is this the result you expected?
Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @Anonymous , Thank you for your suggestion. This is very helpful and I think it might work. However, I need a little extra help in creating the Value measure or column. I'm getting that value visually by applying the Show value as Percent of Row Total to the Count of Status field. Thanks!
For dubugging, create a matrix visual and add your [Color Status] measure into it. If you observe any mistake in the returned results, continue investigating each and every variable and apply the fix if required.
Please be informed, for percentage meausres, the division value would be between 0 to 1. Applying percentage format string will multiply it with 100 and the '%' to the value. I am not sure which meausre you added to your visual, I could see that it has percentage symbol, so I am assuming you applied percentage format string. I also observed that your percentage measure has a multiplication factor of 100. Just check if there is anything you missed here
Need a Power BI Consultation? Hire me on Upwork
Connect on LinkedIn
|
User | Count |
---|---|
70 | |
70 | |
34 | |
23 | |
22 |
User | Count |
---|---|
96 | |
94 | |
50 | |
42 | |
40 |