Get certified for free when you join Fabric Data Days 2026 and dive into Fabric, Power BI, SQL, AI, and other essential data skills.
Join nowJuly 7 - July 17 | Round 2 of the Power BI Dataviz World Championships. Don't miss your chance! Learn more
Hi everyone,
I'm struggling with a DAX filtering logic where I need to exclude a specific sub-segment value from one calculation path without affecting the other.
The Context: I have a report with a toggle between two main views: Insurance and Other. This is controlled by a calculated column that groups my sub-segments.
The Calculated Column:
Sub_Segment_grouped2 =
IF (
'Subsegment'[Sub_Segment] IN { "Health", "P&C", "Life", "Equity" },
"Insurance",
"Other"
)
The Current Measures: I use a dynamic "Stack" measure to switch between the views:
Total Profit before tax - Stack Dynamic =
VAR subSeg = SELECTEDVALUE ( 'Subsegment'[Sub_Segment_grouped2] )
RETURN
SWITCH (
subSeg,
"Insurance", [Total Profit before tax - Stack insurance],
"Other", [Total Profit before tax - Stack Other],
BLANK()
)
The Problem: In my data, "Equity" is technically mapped to "Insurance" (as seen in my calculated column). However, when the user selects the "Other" view, the visual still aggregates data where Sub_Segment = "Equity" into the "Other" totals/visuals because of the underlying filter context.
Goal: When Sub_Segment_grouped2 is "Other", I want to explicitly exclude/subtract any data where Sub_Segment = "Equity".
Requirement: This must NOT affect the "Insurance" view.
Example: For a specific company, the "Other" view currently shows 34M. 15M of that is "Equity". I want the "Other" view to show only 19M (34-15), while the "Insurance" view remains untouched.
I've tried wrapping the SWITCH in a CALCULATE with a filter, but it's not producing the expected result in the stacked bar chart.
How can I modify Total Profit before tax - Stack Other to strictly ignore the "Equity" sub-segment regardless of the grouping?
The issue comes from filter context. Your SWITCH() measure only decides which measure to return—it does not modify the existing filter context. If Equity is still present in the current context, your [Total Profit before tax - Stack Other] measure will continue to include it unless you explicitly remove it.
Instead of applying the filter around the SWITCH(), apply it inside the "Other" calculation only.
Total Profit before tax - Stack Other =
CALCULATE (
[Total Profit before tax],
KEEPFILTERS (
'Subsegment'[Sub_Segment] <> "Equity"
)
)Then keep your dynamic measure as:
Total Profit before tax - Stack Dynamic =
VAR ViewSelected =
SELECTEDVALUE ( 'Subsegment'[Sub_Segment_grouped2] )
RETURN
SWITCH (
ViewSelected,
"Insurance", [Total Profit before tax - Stack insurance],
"Other", [Total Profit before tax - Stack Other],
BLANK()
)The Insurance measure is left completely unchanged.
The Other measure always adds an extra filter that excludes Equity.
KEEPFILTERS() preserves all existing slicers and visual filters while adding the exclusion for Equity.
Since the exclusion is applied only inside the Other measure, the Insurance view continues to include Equity if required.
If Equity continues to be included, it's likely because another table or relationship is reintroducing the filter context. In that case, explicitly remove the existing Sub_Segment filter before applying your own:
Total Profit before tax - Stack Other =
CALCULATE (
[Total Profit before tax],
REMOVEFILTERS ( 'Subsegment'[Sub_Segment] ),
'Subsegment'[Sub_Segment] <> "Equity"
)To verify the active filter context, create a temporary measure:
Selected Sub Segment =
CONCATENATEX (
VALUES ( 'Subsegment'[Sub_Segment] ),
'Subsegment'[Sub_Segment],
", "
)Place this in a table or card visual. It will show which Sub_Segment values are actually present in the filter context, making it much easier to identify whether the issue is caused by the measure, the visual, or the data model.
Key takeaway: SWITCH() only changes which measure is evaluated—it does not change filter context. Apply the Equity exclusion inside the Other measure using CALCULATE() so the logic affects only that branch while leaving the Insurance calculation untouched.
Try this in your Other measure:
Total Profit before tax - Stack Other =
CALCULATE(
[Total Profit before tax],
'Subsegment'[Sub_Segment] <> "Equity"
)Keep your Insurance measure unchanged. This removes Equity only from the Other view and leaves Insurance unaffected.
Try applying the filter directly in the Other measure:
Total Profit before tax - Stack Other =
CALCULATE(
[Total Profit before tax],
'Subsegment'[Sub_Segment] <> "Equity"
)
This excludes Equity only from the Other calculation while leaving the Insurance view unchanged. If it still appears, share the definition of [Total Profit before tax - Stack Other] for further troubleshooting.
Hi
I see the fix is straightforward,just add the Equity exclusion directly inside your Total Profit before tax - Stack Other measure using CALCULATE with a filter:
daxTotal Profit before tax - Stack Other =
CALCULATE(
[Total Profit before tax],
KEEPFILTERS('Subsegment'[Sub_Segment] <> "Equity")
)
Using KEEPFILTERS here is important , it adds the exclusion on top of whatever filter context already exists from the visual, rather than replacing it. That way it only excludes Equity in that measure without touching what happens in the Insurance path.
Your SWITCH logic stays exactly as is, since the filtering lives inside the Other measure itself. The Insurance measure never sees this filte
Join us in Barcelona for FabCon and SQLCon, the Fabric, Power BI, SQL, and AI community event. Save €200 with code FABCMTY200.
Join Fabric Data Days 2026: 60 days of free live/on-demand sessions, challenges, study groups, and certification opportunities.
| User | Count |
|---|---|
| 3 | |
| 3 | |
| 1 | |
| 1 | |
| 1 |