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 un informe sobre ventas y vendedores. Existen 3 roles, supongamos que depende de qué usuario pueda ver filas diferentes de la tabla de ventas. Si un usuario tiene flag 0 o null, entonces puede ver todo. De lo contrario, examinamos la tabla Items y examinamos si ese usuario aparece allí. En caso afirmativo, el usuario puede ver las filas que tienen item_group_code y item_subgroup_code que se aplican. Alternativamente, miramos la tabla Clientes y si aparece allí el usuario puede ver sus ventas de clientes solamente.
El caso RLS deseado es crear un solo rol y asignar a todos los usuarios allí para que no tengamos que cambiar de un rol a otro manualmente.
Hasta ahora he probado esta condición en la tabla de ventas, pero no funciona.
IF (
[user_logged_condition] = "View All",
1 = 1,
IF (
[user_logged_condition] = "Items",
Sales_Fact_View[key]
= LOOKUPVALUE ( items_access[key_sales], items_access[email], [user_logged] ),
IF (
[user_logged_condition] = "Customers",
Sales_Fact_View[customer]
= LOOKUPVALUE (
customers_access[cust_code],
customers_access[email], [user_logged]
),
1 = 0
)
)
)
También comparto el archivo pbix que he creado: RLS_oneRole.pbix
Gracias
Paños
Solved! Go to Solution.
Por lo tanto, el problema es que en ambas expresiones LOOKUPVALUE que se podrían devolver varios valores y esta función producirá y error en este caso.
Puede solucionar esto de la siguiente manera agregando una segunda condición de búsqueda para el key_sales o cust_code respectivamente:
IF (
[user_logged_condition] = "View All",
1 = 1,
IF (
[user_logged_condition] = "Items",
Sales_Fact_View[key]
= LOOKUPVALUE ( items_access[key_sales]
, items_access[email], [user_logged]
. items_access[key_sales], Sales_Fact_View[key]
),
IF (
[user_logged_condition] = "Customers",
Sales_Fact_View[customer]
= LOOKUPVALUE (
customers_access[cust_code],
customers_access[email], [user_logged],
customers_access[cust_code], Sales_Fact_View[customer]
),
1 = 0
)
)
)
Pero desde un rendimiento perpectivo creo que un mejor enfoque sería tener 3 roles y luego configurar 3 grupos de seguridad y poner un grupo en cada rol y luego agregar usuarios a uno de esos grupos. De esta manera, las expresiones de rol pueden ser simples (y, por lo tanto, más rápidas), se pueden colocar en las tablas de atenuación más pequeñas (y, por lo tanto, serán más rápidas) y no es necesario editar los roles, solo tiene que colocar a los usuarios en los diferentes grupos de seguridad.
Por lo tanto, el problema es que en ambas expresiones LOOKUPVALUE que se podrían devolver varios valores y esta función producirá y error en este caso.
Puede solucionar esto de la siguiente manera agregando una segunda condición de búsqueda para el key_sales o cust_code respectivamente:
IF (
[user_logged_condition] = "View All",
1 = 1,
IF (
[user_logged_condition] = "Items",
Sales_Fact_View[key]
= LOOKUPVALUE ( items_access[key_sales]
, items_access[email], [user_logged]
. items_access[key_sales], Sales_Fact_View[key]
),
IF (
[user_logged_condition] = "Customers",
Sales_Fact_View[customer]
= LOOKUPVALUE (
customers_access[cust_code],
customers_access[email], [user_logged],
customers_access[cust_code], Sales_Fact_View[customer]
),
1 = 0
)
)
)
Pero desde un rendimiento perpectivo creo que un mejor enfoque sería tener 3 roles y luego configurar 3 grupos de seguridad y poner un grupo en cada rol y luego agregar usuarios a uno de esos grupos. De esta manera, las expresiones de rol pueden ser simples (y, por lo tanto, más rápidas), se pueden colocar en las tablas de atenuación más pequeñas (y, por lo tanto, serán más rápidas) y no es necesario editar los roles, solo tiene que colocar a los usuarios en los diferentes grupos de seguridad.
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 |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |