Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
1 year ago

Problema de RLS diferente

Hola

Tengo una tabla denominada Presupuesto y Empleado en Power BI. Los detalles de mi tabla de Empleados y Presupuesto son los siguientes. Cuando mi empleado inicia sesión en el inicio de sesión de Powerbi, quiero que compruebe su dirección de inicio de sesión con la dirección de correo electrónico de la tabla de empleados y compruebe los datos en el campo ID de departamento en la fila donde está su dirección de correo electrónico y en el campo ZZORG_D_ID de la tabla de presupuesto. Quiero que vea las líneas presupuestarias para las que está autorizado. Todo es perfecto hasta ahora. La dificultad comienza aquí. Puede haber uno o más ID de departamento en el campo ZZORG_D_ID separados por comas. Cuando el empleado C inicia sesión, debe estar autorizado a ver las partidas presupuestarias numeradas 2,3,4. Cuando el empleado D inicia sesión, debe estar autorizado a ver las partidas del presupuesto numeradas 3,4. Cuando el empleado E inicia sesión, debe estar autorizado a ver las partidas del presupuesto numeradas 2,3,4. Otro problema es que algunos empleados trabajan como gerentes de otros departamentos en nombre de ellos. Por ejemplo, el empleado A trabaja en el departamento número 10 y en el departamento número 20 en su nombre. Por lo tanto, al iniciar sesión con la misma dirección de correo electrónico, el empleado llamado A debe estar autorizado a ver las partidas del presupuesto con los números de identificación del presupuesto 1,2,3,4.

Las situaciones con las que me encontré y no funcionaron,
Creé un nuevo rol en la sección Seguridad y utilicé la fórmula DAX '[Email] = USERPRINCIPALNAME()' en la pestaña Empleado, y la fórmula DAX FILTER('Budget', CONTAINSSTRING('Bufget'[ZZORG_D_ID], SELECTEDVALUE('Staff'[Department ZORGID]))) en la página Presupuesto.

Gracias

Staff NamCorreo electrónicoDeberDepartamento ZORGID
A[email protected]Ventas10
B[email protected]Director20
C[email protected]Gerente de FI30
D[email protected]BT Maneger20
A[email protected]Gerente de Presupuesto 20

ID de presupuestoSociedadDetalle del código BudfetNombre del presupuestoMonto del presupuestoZZORGID

1

F0120.10.01.01Presupuesto A10010
2F0220.10.01.02Presupuesto B2000

10,20

3F0120.10.01.03Presupuesto C3000010,20,30
4F0120.10.01.04Presupuesto D5000020,20

5 Replies

  • There can be one or more department IDs in the ZZORG_D_ID field separated by commas. 

    Trate de evitar eso si es posible. En su lugar, tenga líneas separadas para estos empleados con un solo departamento por línea. Mucho más fácil de integrar en el modelo de datos.

  • Hola @fatihcankara ,

    Puede crear un rol de seguridad y asignarlo a los usuarios para implementar RLS dinámico. He hecho una prueba para tu referencia:

    [Email] ==  USERPRINCIPALNAME()

    CONTAINSSTRING([ZZORG_D_ID],MAX(Staff[Department ZORGID]))

    Saludos

    Otro

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Administrator

        Hola @fatihcankara ,

        Esto funciona bien para mí. ¿Puedo preguntarle si ha asignado roles a sus usuarios en el modelo semántico del servicio de BI?

        Saludos

        Otro