cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Regular Visitor

Fórmula RLS de múltiples condiciones

Hola a todos,

Quiero implementar una seguridad dinámica de nivel de fila y necesito su ayuda.

Tengo dos mesas

frexville_0-1603747934759.png

Quiero poner una condición, si el usuario es un administrador o pertenecen a la departement_ID 3 para ver todos los datos, de lo contrario para ver sólo sus datos de departamento.

frexville_1-1603748075044.png

Mi fórmula dax no funciona. No sé cómo definir el "NO FILTER".

si ([Role]<>"manager" [Departement_ID]<>1,
[User_name] - USERNAME(),
"NoFilter" )

esa es mi relación, la seguridad bidireccional está habilitada

frexville_0-1603748444113.png

Gracias

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
Super User II
Super User II

@frexville

En realidad, no desea filtrar la tabla de usuarios, desea filtrar la tabla de ingresos y no necesita que la tabla de usuarios se una a la tabla de ingresos. Puedes escribir tu meaure de seguridad así.

VAR _UN = USERNAME()
VAR _Role = LOOKUPVALUE(Users[Role],Users[User_name],_UN)
VAR _Dept = LOOKUPVALUE(Users[Department_ID],Users[User_name],_UN)

RETURN
SWITCH(
    TRUE(),
    _Role = "manager",TRUE(),
    _Dept = 3,TRUE(),
    Revenues[Dept_ID] = _Dept,TRUE()
)

Y esto se aplica a su tabla de ingresos.

jdbuchanan71_0-1603749473196.png

Básicamente, si el rol , administrador o los usuarios dept id 3, devolverá TRUE para cada fila de la tabla de ingresos. RLS muestra solo las filas donde el filtro es TRUE, por lo que mostrará cada fila. Si se trata de un empleado en otro departamento, encuentra su ID de departamento y lo compara con el identificador de departamento de la tabla de ingresos que sólo devolverá TRUE si es su departamento.

Manager in dept 1Gerente en el departamento 1

worker in dept 3trabajador en el departamento 3

worker in dept 4trabajador en el departamento 4

He adjuntado mi archivo de muestra para que lo mires.

View solution in original post

2 REPLIES 2
Highlighted
Super User II
Super User II

@frexville

En realidad, no desea filtrar la tabla de usuarios, desea filtrar la tabla de ingresos y no necesita que la tabla de usuarios se una a la tabla de ingresos. Puedes escribir tu meaure de seguridad así.

VAR _UN = USERNAME()
VAR _Role = LOOKUPVALUE(Users[Role],Users[User_name],_UN)
VAR _Dept = LOOKUPVALUE(Users[Department_ID],Users[User_name],_UN)

RETURN
SWITCH(
    TRUE(),
    _Role = "manager",TRUE(),
    _Dept = 3,TRUE(),
    Revenues[Dept_ID] = _Dept,TRUE()
)

Y esto se aplica a su tabla de ingresos.

jdbuchanan71_0-1603749473196.png

Básicamente, si el rol , administrador o los usuarios dept id 3, devolverá TRUE para cada fila de la tabla de ingresos. RLS muestra solo las filas donde el filtro es TRUE, por lo que mostrará cada fila. Si se trata de un empleado en otro departamento, encuentra su ID de departamento y lo compara con el identificador de departamento de la tabla de ingresos que sólo devolverá TRUE si es su departamento.

Manager in dept 1Gerente en el departamento 1

worker in dept 3trabajador en el departamento 3

worker in dept 4trabajador en el departamento 4

He adjuntado mi archivo de muestra para que lo mires.

View solution in original post

Highlighted

@jdbuchanan71 muchas gracias

funciona bien 🙂

Helpful resources

Announcements
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

Community Conference

Microsoft Power Platform Communities

Check out the Winners!

secondImage

Create an end-to-end data and analytics solution

Learn how Power BI works with the latest Azure data and analytics innovations at the digital event with Microsoft CEO Satya Nadella.

Top Solution Authors