Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Vote for your favorite vizzies from the Power BI Dataviz World Championship submissions. Vote now!
Hi Community,
I am currently working on a Power BI project with a highly complex data model involving multiple tables and multiple relationships.
The dataset represents a recruitment workflow with custom columns such as:
Application Review
Recruiter Phone Screen
Hiring Manager Review
Interview Stages
Final Hiring Status
All these stages are stored as custom columns, not a normalized stage table.
I have already built the report successfully, but I am facing an issue with DAX-based drill-through accuracy.
I need to display all stage values role-wise in a single table (Recruiter, Hiring Manager, etc.).
For example, when Application ID = 555, drilling through from Candidate Details should show only the accurate stage values related to that application.
Drill-through works correctly when using columns directly.
However, when I use DAX measures or calculated logic, the drill-through:
Does not return accurate data
Shows incorrect or mismatched stage values
Sometimes ignores the selected Application ID context
Very complex data modeling
Multiple fact and dimension tables
Multiple active/inactive relationships
Heavy use of DAX to derive role-based stage values
Client specifically requires the solution using DAX, not column-based drill-through
Any guidance, examples, or best practices would be highly appreciated.
Thank you in advance.
Solved! Go to Solution.
Hi @KS7 ,
Thanks for reaching out to Community Forum.
I was able to reproduce this issue. The drill through itself works correctly, but when stage values are derived using DAX measures, the Application ID context can be lost if it isn't explicitly enforced.
The reliable fix was to keep the existing model, use a small disconnected Roles table for the row layout, and update the measures to explicitly anchor on the drilled Application ID using SELECTEDVALUE with KEEPFILTERS. This ensures each role's stage value is evaluated only for the selected application and avoids any cross application leakage.
After configuring the drill through page properly (separate source page, page type set to Drillthrough, Application ID used as the drill through field, and Used as category), the role wise stage values returned accurately for all cases, including partially completed workflows.
Please find the attached .pbix file for your reference.
Thank you.
This usually happens because the drill-through filter is on a column, but your measures are not actually being forced to evaluate at a single ApplicationID (they’re evaluating in a broader context, or through the “wrong” relationship).
The fix is to make every “role/status” measure explicitly anchor itself to the drill-through Application ID and (if needed) activate the correct relationship.
Create a debug measure and put it on the drill-through page:
__AppId In Context =
SELECTEDVALUE ( Applications[ApplicationID], -1 )
If you ever get -1, your drill-through page isn’t filtering to one ApplicationID (or you’re using the wrong field in the Drill-through well).
Use the ApplicationID from the drill-through table, then force it onto the table your measure reads:
Recruiter Status =
VAR AppId = SELECTEDVALUE ( Applications[ApplicationID] )
RETURN
IF (
ISBLANK ( AppId ),
BLANK(),
CALCULATE (
MAX ( FactWorkflow[RecruiterPhoneScreenStatus] ),
TREATAS ( { AppId }, FactWorkflow[ApplicationID] )
)
)This avoids “context drifting” when multiple tables/relationships exist.
Example:
Hiring Manager Status =
VAR AppId = SELECTEDVALUE ( Applications[ApplicationID] )
RETURN
CALCULATE (
MAX ( FactWorkflow[HiringManagerReviewStatus] ),
TREATAS ( { AppId }, FactWorkflow[ApplicationID] ),
USERELATIONSHIP ( Applications[ApplicationID], FactWorkflow[ApplicationID] )
)(Use USERELATIONSHIP only if you truly have an inactive relationship you need.)
If your “role-based status” is derived from another table (events/notes/etc.), always reduce it with a deterministic rule (latest date, highest step, etc.):
Interview Status =
VAR AppId = SELECTEDVALUE ( Applications[ApplicationID] )
RETURN
CALCULATE (
MAXX (
TOPN (
1,
FILTER ( FactStages, FactStages[ApplicationID] = AppId ),
FactStages[StageDate], DESC
),
FactStages[StageStatus]
)
)Columns are filtered by the model automatically.
Measures can ignore that filter if:
you used ALL() / REMOVEFILTERS() somewhere upstream
you rely on a relationship path that’s ambiguous
there are multiple ApplicationIDs in context
So if you have measures like:
CALCULATE ( ..., REMOVEFILTERS(Applications) )that will break drill-through unless you re-apply the selected ApplicationID via TREATAS.
Hi @KS7 ,
Thanks for reaching out to Community Forum.
I was able to reproduce this issue. The drill through itself works correctly, but when stage values are derived using DAX measures, the Application ID context can be lost if it isn't explicitly enforced.
The reliable fix was to keep the existing model, use a small disconnected Roles table for the row layout, and update the measures to explicitly anchor on the drilled Application ID using SELECTEDVALUE with KEEPFILTERS. This ensures each role's stage value is evaluated only for the selected application and avoids any cross application leakage.
After configuring the drill through page properly (separate source page, page type set to Drillthrough, Application ID used as the drill through field, and Used as category), the role wise stage values returned accurately for all cases, including partially completed workflows.
Please find the attached .pbix file for your reference.
Thank you.
Hi @KS7 ,
I hope the above details help you fix the issue. If you still have any questions or need more help, feel free to reach out. We’re always here to support you
Hi @KS7 ,
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
Please provide sample data that covers your issue or question completely, in a usable format (not as a screenshot).
Do not include sensitive information. Do not include anything that is unrelated to the issue or question.
Please show the expected outcome based on the sample data you provided.
Need help uploading data? https://community.fabric.microsoft.com/t5/Community-Blog/How-to-provide-sample-data-in-the-Power-BI-...
Want faster answers? https://community.fabric.microsoft.com/t5/Desktop/How-to-Get-Your-Question-Answered-Quickly/m-p/1447...
Vote for your favorite vizzies from the Power BI World Championship submissions!
If you love stickers, then you will definitely want to check out our Community Sticker Challenge!
Check out the January 2026 Power BI update to learn about new features.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 1 | |
| 1 | |
| 1 |
| User | Count |
|---|---|
| 4 | |
| 3 | |
| 3 | |
| 2 | |
| 2 |