Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

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,...
  • jdbuchanan71's avatar
    5 years ago

    @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.

  • Anonymous's avatar
    Anonymous
    5 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 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 [email protected].

    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.