Return UPN in Dynamic RLS Measure
Short answer
B You must use the USERPRINCIPALNAME() function to return the user principal name (UPN), not USEROBJECTID().
Question
Note: This section contains one or more sets of questions with the same scenario and problem. Each question presents a unique solution to the problem. You must determine whether the solution meets the stated goals. More than one solution in the set might solve the problem. It is also possible that none of the solutions in the set solve the problem. After you answer a question in this section, you will NOT be able to return. As a result, these questions do not appear on the Review Screen. Your network contains an on-premises Active Directory Domain Services (AD DS) domain named contoso.com that syncs with a Microsoft Entra tenant by using Microsoft Entra Connect. You have a Fabric tenant that contains a semantic model. You enable dynamic row-level security (RLS) for the model and deploy the model to the Fabric service. You query a measure that includes the USERNAME() function, and the query returns a blank result. You need to ensure that the measure returns the user principal name (UPN) of a user. Solution: You update the measure to use the USEROBJECTID() function. Does this meet the goal?
Key Takeaways
Distinguishing between DAX identity functions is tested; the common trap is confusing USEROBJECTID() with USERPRINCIPALNAME() when a UPN is required.
This scenario tests dynamic row-level security (RLS) in a Fabric semantic model where USERNAME() returns blank. The page establishes that to return the user principal name (UPN), you must use USERPRINCIPALNAME(), not USEROBJECTID().
Common mistake: Choosing Yes because USEROBJECTID() returns a user identifier, but it returns the Object ID (GUID), not the UPN.
Expert Analysis
Why the Answer Is Correct
The correct answer is No because the USEROBJECTID function returns the security identifier (Object ID/GUID) of the current user, not their user principal name (UPN). To return the UPN, the measure must be updated to use the USERPRINCIPALNAME function. Therefore, the proposed solution does not meet the stated goal.Why the Other Options Are Wrong
Option A (Yes) is incorrect because it assumes USEROBJECTID will return the UPN format (e.g., [email protected]), which is false. USEROBJECTID returns a system-generated GUID string representing the user's directory object, which cannot substitute for a UPN in dynamic RLS filters expecting an email format.Community Comment Notes
Commenters unanimously agree that USERPRINCIPALNAME is the correct function for returning the UPN. As nappi1 noted, the "user principal name (UPN) of a user is returned by the USERPRINCIPALNAME function".Official Reference
Exam Strategy
When a question asks for a specific user attribute (UPN, Object ID, or domain\user), memorize the exact DAX function that returns it: USERPRINCIPALNAME(), USEROBJECTID(), and USERNAME() respectively. Do not interchange them.
Community Votes
100% of anonymous learners picked answer B. Votes are pick records left by other test-takers — they are not the verified answer.
Discussion 3 contributions
Compiled from public community threads and reader submissions, lightly edited for clarity. Handles and vote tallies are shown as recorded.
From public community threads 3
-
nappi1 👍 2 Answered Buser principal name (UPN) of a user is returned by the USERPRINCIPALNAME() function
-
Pegooli 👍 2 Answered BUSERPRINCIPALNAME() is the correct answer. So B is correct
-
shorymor 👍 2 Answered BAnswer is correct. you should use USERPRINCIPALNAME()
Reader comments & corrections
No reader corrections yet — spotted an error or have a note? Share it below.
Related Analysis
Practice All DP-600 Questions
Access 115 questions with complete answers and detailed explanations.
View Full DP-600 Practice Test →