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

The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!

Reply
Syndicate_Admin
Administrator
Administrator

Dimensiones adicionales de filtrado RLS

¡Hola!

Puedo necesitar tu ayuda con una pregunta sobre Seguridad a Nivel de Fila.

Tengo un modelo en el que apliqué RLS basado en el UPN, que funciona bien.
RLS filtra la tabla Team (puente), que a su vez filtra Regelingen (dim), que filtra Registraties (hecho) y otras tablas de hechos.

También tenemos las dimensiones Behandelaar y Reviewer, que ambas cuentan con una larga lista de empleados. Ambos tienen una columna Equipo que corresponde con el equipo de columna en la tabla Equipo.

Chewdata_1-1765271384689.png


Mi pregunta:
Me gustaría filtrar tanto las dimensiones de Behandelaar como las de revisores basándome en los Teams filtrados por RLS, para que los usuarios solo vean el Behandelaren y los revisores de su propio equipo en los slicers. He intentado añadir a Behandelaren[Equipo] EN VALORES(Equipo[Equipo]) y Revisor[Equipo] EN VALORES(Equipo[Equipo]) en el rol de UPN. Pero eso no parece funcionar.

¿Cuál sería la forma correcta y más limpia de que los slicers basados en Behandelaar y Reviewer muestren solo empleados del equipo? Hay múltiples tablas de factos en el modelo, por lo que se necesitan las dimensiones.

Chewdata_2-1765271672805.png

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hola @Chewdata

Tu enfoque es correcto; Necesitas añadir restricciones para Behandelaren y los Revisores al rol RLS, pero la expresión que usaste es incorrecta.

Primero deberías filtrar los permisos de Teams que tiene el usuario actual y luego usar esos elementos para restringir a Behandelaren y a los revisores.

En resumen, necesitas cambiar Behandelaren[Equipo] EN VALORES(Equipo[Equipo]) a:

VAR AccessTeamItems = 
    CALCULATETABLE(
        VALUES(RLS[Team]),
        RLS[UPN]=USENAME(),
        ALL()
    )
RETURN
Behandelaren[Team] IN AccessTeamItems
// Reviewers[Team] IN AccessTeamItems

¿He respondido a tu pregunta? Si es así, por favor marcad mi publicación como solución y ¡agradece tus kudos!

Gracias~

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

La solución más limpia es dejar que el modelo de datos haga el trabajo en lugar de intentar forzarlo con VALUES() dentro del rol RLS.

Tu RLS ya funciona así:

RLS (UPN) → Equipo → Reglamentos → Registros (+ otros datos)

Para asegurarte de que Behandelaar y Reviewer se filtren igual, simplemente conéctalos también con Team :

  • Relación: Equipo[Equipo] (1) → Behandelaar[Equipo] (*)

  • Relación: Equipo[Equipo] (1) Revisor →[Equipo] (*)

  • Dirección de filtro cruzado: Simple (de Equipo a la dimensión es suficiente)

Mantén tu RLS tal cual está en la tabla RLS/Usuarios (RLS[UPN] = USERPRINCIPALNAME()).

Dado que RLS ya filtra la tabla Equipo , ese filtro se propagará automáticamente a través de estas relaciones y restringirá ambas dimensiones. Tus slicers para Behandelaar y Reviewer solo mostrarán a los empleados de los equipos permitidos, sin necesidad de condiciones adicionales de DAX.

Así que la clave es: resolverlo en el modelo, no en la expresión VALUES().

RLS (Usuarios)
|
| 1:* (RLS filtra equipos mediante UPN → mapeo de equipos)
v
Equipo
├── 1:* → Reglamentos → 1:* → Registros
├── 1:* → Practicante
└── 1:* → Reseñador

Parece una respuesta de IA, Teams no puede conectarse a las tablas de Behandelaren o Revisores porque eventualmente controlarán la tabla de Registros, lo que resultará en un error. Porque solo puede haber un camino de relación entre dos tablas.

Syndicate_Admin
Administrator
Administrator

Hola @Chewdata

Tu enfoque es correcto; Necesitas añadir restricciones para Behandelaren y los Revisores al rol RLS, pero la expresión que usaste es incorrecta.

Primero deberías filtrar los permisos de Teams que tiene el usuario actual y luego usar esos elementos para restringir a Behandelaren y a los revisores.

En resumen, necesitas cambiar Behandelaren[Equipo] EN VALORES(Equipo[Equipo]) a:

VAR AccessTeamItems = 
    CALCULATETABLE(
        VALUES(RLS[Team]),
        RLS[UPN]=USENAME(),
        ALL()
    )
RETURN
Behandelaren[Team] IN AccessTeamItems
// Reviewers[Team] IN AccessTeamItems

¿He respondido a tu pregunta? Si es así, por favor marcad mi publicación como solución y ¡agradece tus kudos!

Gracias~

Sí, esto funcionó perfectamente, ¡muchas gracias!

Syndicate_Admin
Administrator
Administrator

¡Hola @Chewdata

Añadir reglas RLS separadas en las tablas de Behandelaar y Revisor usando [Team] IN VALUES(Team[Team]) para que hereden la misma restricción de equipo creada por el filtro UPN en la tabla de equipos; Esta es la forma más limpia y soportada de hacer que los slicers muestren solo empleados del propio equipo del usuario.

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! It's time to submit your entry.

January Power BI Update Carousel

Power BI Monthly Update - January 2026

Check out the January 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.