Forum Discussion
Data Masked Column Giving Wrong Records In Visual
- 9 months ago
Hi Koritala ,
Awesome, thanks for confirming you’re working with a single view and no joins that definitely keeps things simple. In the example DataNinja777 shared, they just used a static email to show how the masking works, but you can totally make it dynamic with the USERPRINCIPALNAME function so it updates automatically for whoever’s logged in.
Here’s how you can set up your Can See PII measure:
Can See PII = IF( USERPRINCIPALNAME() IN { "[email protected]", "[email protected]" }, TRUE(), FALSE() )
This checks if the signed-in user is one of the people allowed to view unmasked data. Just swap out those emails for the real ones in your org. Once you’ve got that, you can plug it into your masking logic like you did in your test:
FirstName Masked = VAR vFirstName = MAXX( VALUES( 'YourView'[FirstName] ), 'YourView'[FirstName] ) RETURN IF( [Can See PII], vFirstName, IF( NOT ISBLANK(vFirstName), REPT("*", LEN(vFirstName)), BLANK() ) )
Since you’re only using one view, your slicers will filter everything automatically, so you don’t need to mess with relationships or TREATAS. The masking will just work with your slicers and whoever’s logged in.
If you want more details, check out the Microsoft docs:
USERPRINCIPALNAME – https://learn.microsoft.com/en-us/dax/userprincipalname-function-dax
SELECTEDVALUE – https://learn.microsoft.com/en-us/dax/selectedvalue-function-dax
TREATAS – https://learn.microsoft.com/en-us/dax/treatas-function-daxBest Regards,
Tejaswi.
Community Support
Hi Koritala ,
It appears that your filtering is not working in the intended way. I have created a pbix file to demonstrate the case.
FirstName Masked (Broken) =
VAR vFirstName =
CALCULATE (
MAXX ( VALUES ( 'Members'[FirstName] ), 'Members'[FirstName] ),
ALL ( 'Members' )
)
RETURN
IF ( NOT ISBLANK ( vFirstName ), REPT ( "*", LEN ( vFirstName ) ), BLANK () )
Filtering will work properly by using the following measure:
FirstName Masked (Working) =
VAR vFirstName =
MAXX ( VALUES ( 'Members'[FirstName] ), 'Members'[FirstName] )
RETURN
IF (
[Can See PII],
vFirstName,
IF ( NOT ISBLANK ( vFirstName ), REPT ("*", LEN ( vFirstName ) ), BLANK () )
)
When the filtering is fixed, the crossjoining of the masking will disappear as shown above.
I am attaching the pbix file for your reference.
Best regards,
Hi DataNinja777,
Thanks for sharing pbxi.
One thing I want to tell you that in my case, I have only one view where all my report columns are coming. There are no multiple tables or joins.
Also, can you please confirm me, you have made static user id { "[email protected]" }. In my case how to write the expression exactly?
Thanks,
Sri.