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

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.

Reply
Anonymous
Not applicable

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

UserprincipalnameSitio
usu1@example.coms1,s3,s6
usu2@example.coms2,s19,s23
usu3@example.coms3,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ónPaísSitio
Aas2
Abs1
Bcs19
Bds3
Ces4

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.

2 ACCEPTED SOLUTIONS
jdbuchanan71
Super User
Super User

@K_Caballero16

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.

jdbuchanan71_1-1602172154584.png

jdbuchanan71_3-1602172190230.png

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.

View solution in original post

v-rzhou-msft
Community Support
Community Support

Hola @K_Caballero16

Cuando vemos el resultado como usu2@example.com,deberíamos ver S2,S19 y S23, sin embargo en la respuesta de podemos 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:

1.png

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.

View solution in original post

2 REPLIES 2
v-rzhou-msft
Community Support
Community Support

Hola @K_Caballero16

Cuando vemos el resultado como usu2@example.com,deberíamos ver S2,S19 y S23, sin embargo en la respuesta de podemos 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:

1.png

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.

jdbuchanan71
Super User
Super User

@K_Caballero16

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.

jdbuchanan71_1-1602172154584.png

jdbuchanan71_3-1602172190230.png

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.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.