Filtrado RLS a nivel de administrador basado en "es gerente" almacenado en una tabla de dimensiones

Un usuario Pregunto ✅

bean

He leído sobre RLS a nivel de gerente donde el campo «Es gerente» es una columna en la tabla de empleados o usuarios, pero me gustaría implementar esta seguridad donde el campo «Es gerente» está en una tabla que enumera el nivel o grado de pago de los empleados con una columna que define si ese nivel es un gerente o no.

Mi modelo de datos (una versión simplificada de mi modelo real):

Data_TimeWorked

IDENTIFICACIÓN Fecha Duración Identificación del cliente ID de empleado
1 1/1/2020 2 101 1
2 1/1/2020 2 201 2
3 1/1/2020 2 225 3
4 1/1/2020 2 235 4
5 1/1/2020 2 110 5
6 1/1/2020 2 116 5

Empleado

IDENTIFICACIÓN Nombre PayGrade_ID Correo electrónico
1 hijo beverlin 1 hijo.beverlin@constoso.com
2 Cedric Brightwell 2 cedric.brightwell@constoso.com
3 Deonna Borgman 3 deonna.borgman@constoso.com
4 Laveta Hemstreet 4 laveta.hemstreet@constoso.com

Dim_PayGrade

IDENTIFICACIÓN Nivel Descripción es gerente
1 10 Líder 1
2 7 Gerente 1
3 5 Supervisor 0
4 3 Personal 0
5 1 Esbirro 0

Hay 1:muchas relaciones de ‘Empleado'[ID] a ‘Data_TimeWorked'[EmployeeID] y

de ‘Dim_PayGrade'[ID] a ‘Empleado'[PayGrade_ID]

Lo que busco hacer es proporcionar a cualquier persona con administrador o acceso de nivel superior a todos los datos en Data_TimeWorked, pero que aquellos debajo del administrador solo tengan acceso a sus propios datos.

Intenté implementar RLS dinámico con un filtro DAX en la tabla de empleados, pero hasta ahora descubro que me falta comprensión del filtrado DAX, ya que no puedo obtener una sintaxis que funcione o estoy tratando de aplicarlo a el lugar equivocado

Intenté esto pero no pude obtener la sintaxis para verificar:

Si(

MaxX(

Filtrar(

‘Empleado’,’Empleado'[Email]=NombrePrincipalUsuario())

,RELACIONADO(‘Dim_PayGrade'[Is Manager])=0,

‘Empleado'[Email]=NombrePrincipalUsuario(),

1=1

)

También probé:

SI(

VALOR DE BÚSQUEDA(

‘Dim_PayGrade'[Is Manager],

‘Empleado'[Email],

NOMBRE PRINCIPAL DE USUARIO()

)=0,

[Email] = NombrePrincipalUsuario(),

Cierto()

)

Soy relativamente nuevo en Power BI por la cantidad total de tiempo que he pasado trabajando con él y Power Pivot, pero me siento un poco atascado en este tema y creo que me estoy perdiendo algo relativamente fundamental, pero no puedo entender qué.

Muchas gracias a cualquiera que pueda ayudarme con esto.

Anónimo

Por favor revisa esta publicación puede ser que te ayude.

https://radacad.com/dynamic-row-level-security-with-organizational-hierarchy-power-bi

Gracias,
Pravin

Si resuelve su problema, márquelo como una solución y brinde Kudos.

bean

En respuesta a Anónimo

Agradezco su respuesta, pero ese es uno de los artículos que he leído antes de publicar.

Anónimo

En respuesta a bean

Falta la función de ruta y el elemento de ruta en su caso. por favor revise la publicación una vez más.

Gracias y Saludos,
Pravin Wattamwar
www.linkedin.com/in/pravin-p-wattamwar

Si resuelvo su problema, márquelo como una solución y felicítelo.

mira mi blog aquí
https://community.powerbi.com/t5/Community-Blog/Connecting-to-a-Tabular-Model-Using-Power-BI/ba-p/91…

bean

En respuesta a Anónimo

Estoy tratando de tener acceso a nivel de administrador como se explica aquí, pero con una diferencia en el lugar donde almaceno el valor «Es administrador».

https://radacad.com/dynamic-row-level-security-with-manager-level-access-in-power-bi

No estoy seguro de cómo se aplicó la ruta a mi caso de uso, ya que no estoy rastreando QUIÉN administra a QUIÉN, sino solo si un usuario es un administrador o no. Nuestra organización no tiene una cadena de mando definitiva, ya que nuestro personal está agrupado.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *