Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
srlabhe
Resolver III
Resolver III

Data to be merged on Visual Level

Hi I have query which is pulling data from a view. Now based on Start and End Date selection I want data to be displayed as "Required Result" below

srlabhe_0-1765214781309.png

Please note I will have two slicres on to select Start Date and End Date and based on selectein it should goto data and have "Required Result" to display with new column Change.

The data for Start Date and End Date are not supoposed to be part of report but just for your undersatnding whats data for those selected dates

Appreciate your help 

15 REPLIES 15
v-tejrama
Community Support
Community Support

Hi @srlabhe ,

Thanks for reaching out to the Microsoft fabric community forum.

 

The behavior you're seeing is expected with the current slicer selections and setup. When the Start Date is set to an earlier snapshot and the End Date to a later one where some names or IDs are missing, those records are correctly marked as Deleted. This shows the ChangeLabel logic is working as intended, since it checks for each ID's presence across the two selected snapshot dates rather than merging the data.

 

As long as each slicer is in List mode with single select, the SnapshotDate column is of Date type, and the table visual includes the ID field for row context, your results are accurate. The solution meets both the original requirement and the follow-up scenario, so no further changes are needed unless you want to add more filtering or formatting.

Please find the attached PBIX and Screenshort file for your reference.

vtejrama_0-1765795759916.png

 

 

Best Regards,
Tejaswi.
Community Support

Thanks but I want to use the change status column as slicer and being it as measure cant add in slicer. Any alternative for th esame?

Hi @srlabhe ,

This is expected behavior in Power BI, as measures cannot be directly used in slicers. To work around this, you can create a small, disconnected table listing change statuses such as New, Deleted, Modify, and No Change, and use it as the slicer. The slicer selection is matched to each row's calculated change result using a filtering measure.Applying this measure as a visual filter allows the slicer to function correctly while keeping the change logic dynamic. 


Thank you.

Yes but when I select multiple values form filter it deosnt work as required. For ex if I just want to show everything except No Chnage and select in filter accordingly it still shows "No change"data.Below is the measure i am using to select data

VAR selChange = SELECTEDVALUE( ChangeType[Change] ) // value selected in ChangeType slicer
VAR rowChange = [varMeasRMAssignDiff] // the computed change label for the row
RETURN
IF(
ISBLANK(selChange) || ISBLANK(rowChange),
1, // if no change selected or row has no label, keep it visible
IF(rowChange = selChange, 1, 0)
)

Hi @srlabhe ,

 

Thank you for your follow-up. The visual appearing blank in this scenario is expected and not an issue with Fabric or Power BI. This happens because the ChangeLabel measure uses SELECTEDVALUE from both the start and end date slicers. If either slicer doesn't have a single date selected, SELECTEDVALUE returns blank, making the measure blank for all rows and causing the table visual to appear empty. This only occurs after the measure is added.

To address this, use disconnected date tables for the start and end date slicers. If the slicers are connected to the main table, data is filtered out before the measure runs, preventing it from accurately determining if a record is new, deleted, modified, or unchanged between snapshots. Disconnected slicers keep the full dataset visible, allowing the measure to compare the two dates directly.

It's also important that the measure never returns blank. It should handle cases where one or both slicers aren't selected and return a meaningful value, so the visual stays visible. When both dates are selected, the measure can then determine the status of each ID. This approach keeps the table from disappearing.

If you want to let users filter by change type (like New or Modified), use a separate measure as a visual level filter instead of relying on the label measure alone. This way, the table remains populated even if no change type is selected.

Thank you.

Hi @srlabhe ,

 

I wanted to check if you had the opportunity to review the information provided. Please feel free to contact us if you have any further questions.

Thank you.

Hi @srlabhe ,

 

I wanted to follow up and see if you had a chance to review the information shared. If you have any further questions or need additional assistance, feel free to reach out.

Thank you.

Ashish_Mathur
Super User
Super User

Hi,

Share the download link of the PBI file.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
Jaywant-Thorat
Resolver III
Resolver III

For Interactive & filterable Change column, do below steps:
1) Create disconnected date slicer tables

(If you already have date tables used elsewhere, create two tiny disconnected tables just for the slicers.)

Modeling → New table:

StartDate = CALENDAR( DATE(2015,1,1), DATE(2030,12,31) )
EndDate = CALENDAR( DATE(2015,1,1), DATE(2030,12,31) )

Or create them however you prefer.

2) Create simple ChangeType table (for slicer)

Modeling → New table:

ChangeType = DATATABLE("Change", STRING, { {"New"}, {"Deleted"}, {"No Change"}, {"Modify"} })

Put a slicer on ChangeType[Change].

3) Add the main measure: ChangeLabel

Create a measure in your model (adjust names to match your table/columns; I use YourView, SnapshotDate, ID, idnamekey — replace as needed):

ChangeLabel =
VAR vStart = SELECTEDVALUE( StartDate[Date] )
VAR vEnd = SELECTEDVALUE( EndDate[Date] )
VAR vID = SELECTEDVALUE( 'YourView'[ID] )

// Determine presence in Start/End snapshots
VAR inStart =
CALCULATE(
COUNTROWS( 'YourView' ),
ALL( 'YourView' ),
'YourView'[SnapshotDate] = vStart,
'YourView'[ID] = vID
) > 0

VAR inEnd =
CALCULATE(
COUNTROWS( 'YourView' ),
ALL( 'YourView' ),
'YourView'[SnapshotDate] = vEnd,
'YourView'[ID] = vID
) > 0

// Grab the idnamekey or comparable value to detect change
VAR startKey =
CALCULATE(
MAX( 'YourView'[idnamekey] ),
ALL( 'YourView' ),
'YourView'[SnapshotDate] = vStart,
'YourView'[ID] = vID
)

VAR endKey =
CALCULATE(
MAX( 'YourView'[idnamekey] ),
ALL( 'YourView' ),
'YourView'[SnapshotDate] = vEnd,
'YourView'[ID] = vID
)

RETURN
SWITCH(
TRUE(),
inEnd && NOT inStart, "New",
inStart && NOT inEnd, "Deleted",
inStart && inEnd && endKey = startKey, "No Change",
inStart && inEnd && endKey <> startKey, "Modify",
BLANK()
)

Notes:
>> ALL('YourView') removes the visual filter so the measure can explicitly target the SnapshotDate rows.
>> If idnamekey may be BLANK or duplicates exist, you can change the aggregation used (e.g., CONCATENATEX or other logic).
>> Replace 'YourView' and column names with your actual table & column names.

4) Add filter measure: IsInSelectedChange

Create this measure and use it as a visual-level filter (set to is 1) on your table visual.

IsInSelectedChange =
VAR selChange = SELECTEDVALUE( ChangeType[Change] ) // value selected in ChangeType slicer
VAR rowChange = [ChangeLabel] // the computed change label for the row
RETURN
IF(
ISBLANK(selChange) || ISBLANK(rowChange),
1, // if no change selected or row has no label, keep it visible
IF(rowChange = selChange, 1, 0)
)

Final Fix:

>> Put ID, Name, idnamekey (or whatever columns) into a table visual.
>> Add the ChangeLabel measure into the visual (so it shows as a column).
>> In the Visual → Filters area, add IsInSelectedChange and set it to is 1.
>> Now the ChangeType slicer behaves like a normal filter — selecting New or Modify will filter the table to those rows.
>> Show both Name_Start and Name_End if you want to display old vs new values — create them with CALCULATE(MAX(...), FILTER(...)) pulling from the Start and End snapshots like the logic used above.
>> If you want to show a friendly message if Start/End not selected, show a card with IF(OR(ISBLANK(vStart), ISBLANK(vEnd)), "Please pick Start and End", ...).
>> Make sure both StartDate/EndDate slicers are single-select (so the measures return a single date).

=================================================================
Did I answer your question? Mark my post as a solution! This will help others on the forum!

Appreciate your Kudos!!

Jaywant Thorat | MCT | Data Analytics Coach
Linkedin: https://www.linkedin.com/in/jaywantthorat/


Join #MissionPowerBIBharat = https://shorturl.at/5ViW9

#MissionPowerBIBharat
LIVE with Jaywant Thorat from 15 Dec 2025
8 Days | 8 Sessions | 1 hr daily | 100% Free

The step where I am adding Chang Lable measure in Table visual everything goes blank 

Improvised Version

 

Step 1 — Modify ChangeLabel to avoid full BLANK output:

ChangeLabel =

VAR vStart = SELECTEDVALUE(StartDate[Date])

VAR vEnd = SELECTEDVALUE(EndDate[Date])

VAR vID = SELECTEDVALUE('YourView'[ID])

 

-- If slicers not selected, keep table visible

IF(

ISBLANK(vStart) || ISBLANK(vEnd),

"Select dates",

VAR inStart =

CALCULATE(

COUNTROWS('YourView'),

ALL('YourView'),

'YourView'[SnapshotDate] = vStart,

'YourView'[ID] = vID

) > 0

 

VAR inEnd =

CALCULATE(

COUNTROWS('YourView'),

ALL('YourView'),

'YourView'[SnapshotDate] = vEnd,

'YourView'[ID] = vID

) > 0

 

VAR startKey =

CALCULATE(

MAX('YourView'[idnamekey]),

ALL('YourView'),

'YourView'[SnapshotDate] = vStart,

'YourView'[ID] = vID

)

 

VAR endKey =

CALCULATE(

MAX('YourView'[idnamekey]),

ALL('YourView'),

'YourView'[SnapshotDate] = vEnd,

'YourView'[ID] = vID

)

 

RETURN

SWITCH(

TRUE(),

inEnd && NOT inStart, "New",

inStart && NOT inEnd, "Deleted",

inStart && inEnd && endKey = startKey, "No Change",

inStart && inEnd && endKey <> startKey, "Modify",

"No Data"

)

)

 

Step 2 — Add this measure for filtering:

IsInSelectedChange =

VAR sel = SELECTEDVALUE(ChangeType[Change])

VAR row = [ChangeLabel]

 

RETURN

IF(

ISBLANK(sel),

1,

IF(row = sel, 1, 0)

)

 

90% of the time, the reason is your StartDate or EndDate slicer has no selection → SELECTEDVALUE is blank → measure returns BLANK → visual disappears

With the updated measure, this problem will solve permanently.

 

=================================================================

Did I answer your question? Mark my post as a solution! This will help others on the forum!

Appreciate your Kudos!!

Jaywant Thorat | MCT | Data Analytics Coach

Linkedin: https://www.linkedin.com/in/jaywantthorat/

 

Checklist (VERY IMPORTANT)

Your table will go blank if ANY of these are wrong:

  • StartDate slicer must be disconnected table
  • EndDate slicer must be Disconnected table
  • StartDate slicer selection must be Single date
  • EndDate slicer selection must be Single date
  • The base table visual includes ID must be Required
  • SnapshotDate column exists in same table as ID must be Required
  • YourView contains rows matching chosen snapshot dates must be Required

Its not working as intended for the value for New , looks like belwo condition is failing 

inEnd && NOT inStart, "New",

Amar_Kumar
Continued Contributor
Continued Contributor

@srlabhe please change the name of table from ICPL3 to your table.

1. Model Assumption:

Date (Snapshot date used by slicer), ID, Name, idnamekey (your comparison key or concatenation)

You also have: 
Start Date slicer

End Date slicer

Both slicers filter the same Date column from your view or a Date dimension.

 

2. Capture Slicer values:

create these two measures:

Start Selected Date =
MIN ( 'Date'[Date] )

End Selected Date =
MAX ( 'Date'[Date] )

 

3. Base Lookup measures:

this verifies if a row exits

exists at start:

Exists at Start =
VAR _Start = [Start Selected Date]
RETURN
CALCULATE (
COUNTROWS ( ICPL3 ),
ICPL3[Date] = _Start
)

exists at end

Exists at End =
VAR _End = [End Selected Date]
RETURN
CALCULATE (
COUNTROWS ( ICPL3 ),
ICPL3[Date] = _End
)

4. Detect modification

Key At Start =
VAR _Start = [Start Selected Date]
RETURN
CALCULATE (
MAX ( ICPL3[idnamekey] ),
ICPL3[Date] = _Start
)

 

Key At Start =
VAR _Start = [Start Selected Date]
RETURN
CALCULATE (
MAX ( ICPL3[idnamekey] ),
ICPL3[Date] = _Start
)

 

5. Final measure - Required column "Change" 

 

Change Status :=
VAR _StartExists = [Exists at Start] > 0
VAR _EndExists = [Exists at End] > 0
VAR _StartKey = [Key At Start]
VAR _EndKey = [Key At End]
RETURN

SWITCH (
TRUE(),

-- Record added in End Snapshot
NOT _StartExists && _EndExists,
"New",

-- Record removed from End Snapshot
_StartExists && NOT _EndExists,
"Deleted",

-- Present in both but data changed
_StartExists && _EndExists && _StartKey <> _EndKey,
"Modify",

-- Present in both and unchanged
_StartExists && _EndExists,
"No Change",

BLANK()
)

6. Build the visual

Column for table:

ID, Name, idbamekey, Change Status

Thanks for you rreply , is it possible to have Change Status as column instead, so that I can filter on it 

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.