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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
hideakisuzuki01
Helper II
Helper II

RLS dinámico con varios USERPRINCIPALNAME()

Hola

Estoy tratando de implementar RLS dinámico, pero tener problemas y sería genial si pudiera un poco de ayuda.

Tengo las dos tablas a continuación y tengo la siguiente fórmula

[email] - USERPRINCIPALNAME()

Funciona bien para los dos primeros customerIDs (A y B) pero no funciona para los ID de cliente C y D.

Funcionaría si creara varias filas para C y D, pero eso haría que la relación de tabla fuera de muchos y produjera datos incorrectos.

¿Cómo podría implementar RLS dinámico en esta situación?

IdCantidadCustomerid
1100A
2200A
3300B
4400B
5500B
6600C
7700C
8800D
9900D
101000D
CustomeridNombre del clienteCorreo electrónico
AAaa111@xxxxxx.com
BBbb222@xxxxx.com
CCcc222@xxxxx.com,333@xxxxx.com
DDdd333@xxxxx.com,444@xxxxx.com

La tabla siguiente funcionaría, pero los datos serían erróneos, ya que serían muchas a muchas relaciones.

CustomeridNombre del clienteCorreo electrónico
AAaa111@xxxxxx.com
BBbb222@xxxxx.com
CCcc222@xxxxx.com
CCcc333@xxxxx.com
DDdd333@xxxxx.com
DDdd444@xxxxx.com
1 ACCEPTED SOLUTION
v-rzhou-msft
Community Support
Community Support

Hola @hideakisuzuki01

Construyo dos mesas como la tuya para hacerme una prueba.

Tabla de datos:

1.png

Tabla de usuario (Se ha transformado en el editor de Power Query por Split.):

2.png

Cree una relación de varios a muchos entre las columnas CustomerID en dos tablas.

A continuación, agregue dos expresiones Dax en roles de mange.

En la tabla Datos:

[CustomerID] = 
CALCULATE (
    MAX(Data[CustomerID]),
    FILTER (
        User,
        User[email] = USERPRINCIPALNAME()
            && User[CustomerID] = Data[CustomerID]
    )
)

En la tabla Usuario:

[email] = USERPRINCIPALNAME()

Vamos a usar view como para ver el resultado.

3.png

Puede descargar el archivo pbix desde este enlace: Dynamic RLS with multiple USERPRINCIPALNAME()

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

3 REPLIES 3
v-rzhou-msft
Community Support
Community Support

Hola @hideakisuzuki01

Construyo dos mesas como la tuya para hacerme una prueba.

Tabla de datos:

1.png

Tabla de usuario (Se ha transformado en el editor de Power Query por Split.):

2.png

Cree una relación de varios a muchos entre las columnas CustomerID en dos tablas.

A continuación, agregue dos expresiones Dax en roles de mange.

En la tabla Datos:

[CustomerID] = 
CALCULATE (
    MAX(Data[CustomerID]),
    FILTER (
        User,
        User[email] = USERPRINCIPALNAME()
            && User[CustomerID] = Data[CustomerID]
    )
)

En la tabla Usuario:

[email] = USERPRINCIPALNAME()

Vamos a usar view como para ver el resultado.

3.png

Puede descargar el archivo pbix desde este enlace: Dynamic RLS with multiple USERPRINCIPALNAME()

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

amitchandak
Super User
Super User

@hideakisuzuki01 , c tiene el mismo ID de correo electrónico que B ? Lo mismo para D mismo ID de correo electrónico que C.

Yes, B and C has the same email, because I want both users (222@xxxxx.com and 333@xxxxx.com) to have access to Company B and C`s data. 

 

Does it make sense ?

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors