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
Syndicate_Admin
Administrator
Administrator

Seguridad de nivel de fila: el valor de columna comienza con el valor del usuario que ha iniciado sesión

Hola

Estoy intentando configurar la seguridad de nivel de fila en una tabla que contiene una lista única de todos los empleados. Columnas disponibles:

  • Dirección de correo electrónico del empleado
  • RBS (estructura de descomposición de recursos): muestra la posición del empleado en la organización en un formato como este: "Division.Unit.Department.Team.etc..." (puede tener tantos niveles como sea necesario)

El objetivo es que el usuario que ha iniciado sesión (administrador de línea) solo debería ver los datos de los empleados en el mismo nivel de RBS que él, o en los niveles inferiores.

Por ejemplo, el jefe de unidad con RBS "Division.Unit" debe ver a todos los empleados con RBS

  • Division.Unit
  • Division.Unit.Department1
  • Division.Unit.Department2
  • Division.Unit.Department1.Team1 etc.

No deberían ver emplyees con RBS

  • División
  • Division.Diferente Unidad
  • Division.Different Unit.Department, etc.

En la fórmula DAX, necesito llamar a USERPRINCIPALNAME() para obtener la dirección de correo electrónico del usuario que ha iniciado sesión, pero ¿cómo compruebo qué RBS de las filas comienza con el RBS del usuario que ha iniciado sesión?

Cualquier ayuda será muy apreciada!

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Gracias por sus sugerencias. Aunque podrían funcionar, no pude implementarlos fácilmente.

Lo que hice en su lugar fue establecer el RLS para filtrar todos los empleados donde el RBS contiene el RBS del usuario que ha iniciado sesión y, a continuación, excluir al usuario que ha iniciado sesión.

IF(Employees[Employee Email]=userprincipalname(),False,CONTAINSSTRING(Employees[RBS],LOOKUPVALUE(Employees[RBS],Employees[Employee Email],userprincipalname())))

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Gracias por sus sugerencias. Aunque podrían funcionar, no pude implementarlos fácilmente.

Lo que hice en su lugar fue establecer el RLS para filtrar todos los empleados donde el RBS contiene el RBS del usuario que ha iniciado sesión y, a continuación, excluir al usuario que ha iniciado sesión.

IF(Employees[Employee Email]=userprincipalname(),False,CONTAINSSTRING(Employees[RBS],LOOKUPVALUE(Employees[RBS],Employees[Employee Email],userprincipalname())))

Syndicate_Admin
Administrator
Administrator

@rmarian Utilice el conjunto PATH de funciones DAX. Si reemplaza sus períodos por el carácter "|" que lo convertiría en un PATH para DAX. Alternativamente, divida la columna en función del carácter ".".

Syndicate_Admin
Administrator
Administrator

@Greg_Deckler ¿Podría explicar cómo aplicar esto a mis datos? No tengo una conexión de id-parent de elemento secundario directo entre las filas, solo puedo obtener esta información de la columna RBS que es tipo string. ¿Cómo puedo convertir a ruta?

@rmarian Básicamente puede hacerlo, pero tendría que crear otra columna en la tabla de usuarios, que contendría todos los usuarios que pueden acceder a los datos de usuarios concretos.

Por ejemplo,

usuario que tiene RBS de Division.Unit sólo necesitaría su propio correo electrónico en la nueva columna,

mientras que un usuario que tiene RBS de Division.Unit.Department1, en la nueva columna tendría no sólo su propio correo electrónico, sino también el correo electrónico del primer usuario mencionado, ya que también se puede acceder a este nivel inferior.

básicamente tendría que volver a crear la columna RBS, pero con los correos electrónicos de los usuarios.

El usuario de nivel más alto sólo tendría su propio correo electrónico en la nueva columna, efectivamente sólo él puede ver los datos que están conectados con su RBS.

mientras que el usuario de nivel más bajo en la nueva columna tendría correos electrónicos de todas las personas que están más arriba en la misma cadena RBS como él, dando efectivamente a todos ellos acceso a lo que ve también.

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.