Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
4 years ago

Error RLS Dax Direct Query en el servidor de informes

Hola

Intento implementar RLS en el servidor de informes de consulta directa, con este dax:

var vProfileRole = CALCULATETABLE (VALORES ( DIM_REL_OWNER[ROL] ),
DIM_REL_OWNER[NPK]&"@company.com"=UserPrincipalName()
)

var vProfileBM = CALCULATETABLE (VALORES ( DIM_REL_OWNER[BRANCH_CD] ),
DIM_RELATIONSHIP_OWNER[NPK]&"@company.com"=UserPrincipalName(), DIM_REL_OWNER[ROLE]="BM"
)

var vProfileHOA = CALCULATETABLE (VALORES ( DIM_REL_OWNER[BRANCH_CD] ),
DIM_REL_OWNER[NPK]&"@company.com"=UserPrincipalName(), DIM_REL_OWNER[ROLE]="HOA"
)

devolución

Interruptor(
VERDADERO(),
vProfileRole = "BM", [BRANCH_CD] = vProfileBM),
vProfileRole = "HOA", [AREA_CD] = vProfileBM, FALSE()
)

Pero ese dax me da un error como este: la función "PLACEHOLDER" no está permitida como parte de la expresión de seguridad a nivel de fila en los modelos de consulta directa.

¿Alguna idea para corregir el error?

Gracias

Hardcore

2 Replies

  • Hi, @tegar

    Por favor, mire la parte resaltada en mi captura de pantalla, parece haber paréntesis adicionales en la fórmula. Elimine y pruebe de nuevo.

    veasonfmsft_0-1652668067550.png

    Saludos
    Equipo de soporte de la comunidad _ Eason

  • @v-easonf-msft

    el error todavía surge, lamento ese error tipográfico en este hilo. En el archivo real no hay paréntesis

    He encontrado alguna solución con cambiar la variable dax de esta manera:

    var vProfileBM = SELECTCOLUMNS(FILTER(DIM_REL_OWNER, DIM_REL_OWNER[NPK]&@company.com"=UserPrincipalName() && DIM_REL_OWNER[ROLE]="BM"), "Branch", DIM_REL_OWNER[BRANCH_CD])

    Pero me da un mal rendimiento, que toma mucho tiempo para cada acción en el tablero.

    ¿Alguna otra forma de dax para obtener el mejor rendimiento con un tiempo de carga corto?