Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola a todos
Tengo la siguiente tabla de seguridad (sql) para mi rls, quiero filtrar una tabla basada en este
Userprincipalname | Sitio |
usu1@example.com | s1,s3,s6 |
usu2@example.com | s2,s19,s23 |
usu3@example.com | 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.
Solved! Go to Solution.
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.
Hola @K_Caballero16
Cuando vemos el resultado como usu2@example.com,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 usu2@example.com.
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.
Hola @K_Caballero16
Cuando vemos el resultado como usu2@example.com,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 usu2@example.com.
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.
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.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |