Forum Discussion
Filtrar por columnas concatenadas para RLS
Hola a todos
Tengo la siguiente tabla de seguridad (sql) para mi rls, quiero filtrar una tabla basada en este
| Userprincipalname | Sitio |
| [email protected] | s1,s3,s6 |
| [email protected] | s2,s19,s23 |
| [email protected] | s3,s4 |
pero, no pude filtrar por esta columna del Sitio
y la siguiente tabla es lo que quiero filtrar en función de esta tabla de seguridad
| Región | País | Sitio |
| A | a | s2 |
| A | b | s1 |
| B | c | s19 |
| B | d | s3 |
| C | e | s4 |
Creo que estaba recibiendo un error debido a que estoy usando un operador IN, pero lo que mi sitio me está devolviendo es una especie de "s1,s2,s3", así que ¿cuál será la mejor opción para hacerlo?
Gracias de antemano.
La expresión de filtro podría ser algo como esto (tendrá que cambiar los nombres de las tablas para que coincidan con el modelo).
VAR _UPN = USERPRINCIPALNAME () RETURN CONTAINSSTRING ( LOOKUPVALUE ( Users[Site], Users[UserPrincipalName], _UPN ), Sites[Site] )Y lo aplicaría a la tabla Sitios.
Aunque hay una debilidad en hacerlo de esta manera porque PowerBI ve s2 en 's1,s23' por lo que está dando una coincidencia falsa.
Si eso es realmente cómo son los ID de su sitio, es posible que tenga que poner en 0 líder 's02' en lugar de 's2' o podría dividir los sitios en la tabla de usuarios y luego despivorlos para obtener 1 fila por usuario / par de sitio.
- Anonymous5 years ago
Hola @K_Caballero16
Cuando vemos el resultado como [email protected],deberíamos ver S2,S19 y S23, sin embargo en la respuesta de jdbuchanan71podemos ver S1.
Puede probar mi manera, transformar su tabla de usuarios y construir un RLS.
Divida la columna Sitio en filas en Power Query Editor.
Cree una relación entre dos columnas de sitio en dos tablas.
Prueba esta expresión de Dax.
[Site] = CALCULATE ( MAX(Data[Site]), FILTER ( Users, Users[UserPrincipalName] = USERPRINCIPALNAME() && Users[Site] = Data[Site] ) )Vea el resultado como [email protected].
Resultado:
Puede descargar el archivo pbix desde este enlace: Filtrar por columnas concatenadas para RLS
Saludos
Rico Zhou
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
2 Replies
- jdbuchanan71
Super User
La expresión de filtro podría ser algo como esto (tendrá que cambiar los nombres de las tablas para que coincidan con el modelo).
VAR _UPN = USERPRINCIPALNAME () RETURN CONTAINSSTRING ( LOOKUPVALUE ( Users[Site], Users[UserPrincipalName], _UPN ), Sites[Site] )Y lo aplicaría a la tabla Sitios.
Aunque hay una debilidad en hacerlo de esta manera porque PowerBI ve s2 en 's1,s23' por lo que está dando una coincidencia falsa.
Si eso es realmente cómo son los ID de su sitio, es posible que tenga que poner en 0 líder 's02' en lugar de 's2' o podría dividir los sitios en la tabla de usuarios y luego despivorlos para obtener 1 fila por usuario / par de sitio.
- AnonymousNot applicable
Hola @K_Caballero16
Cuando vemos el resultado como [email protected],deberíamos ver S2,S19 y S23, sin embargo en la respuesta de jdbuchanan71podemos ver S1.
Puede probar mi manera, transformar su tabla de usuarios y construir un RLS.
Divida la columna Sitio en filas en Power Query Editor.
Cree una relación entre dos columnas de sitio en dos tablas.
Prueba esta expresión de Dax.
[Site] = CALCULATE ( MAX(Data[Site]), FILTER ( Users, Users[UserPrincipalName] = USERPRINCIPALNAME() && Users[Site] = Data[Site] ) )Vea el resultado como [email protected].
Resultado:
Puede descargar el archivo pbix desde este enlace: Filtrar por columnas concatenadas para RLS
Saludos
Rico Zhou
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.