Tutorial Power BI: Parámetros de Campo para solucionar visuales con OLS

El pasado Viernes 19 de Agosto tuve el honor de participar en el evento internacional MSCloud Monterrey 2022 (México) con una sesión sobre Seguridad OLS en Power BI. Antes de nada, me gustaría agradecer a patrocinadores y organizadores el evento que hayan confiado en mí ¡fue un eventazo!
Hoy os mostraremos como usar los nuevos Parámetros de Campo de Power BI para solucionar los problemas con las visuales cuando utilizamos seguridad OLS.
¿Qué es la seguridad OLS?
Hemos hablado de seguridad OLS en un tutorial anterior. La seguridad a nivel de Objeto (OLS) se aplica a elementos del modelo de datos, esto es, columnas, medidas y tablas de nuestro conjunto de datos. Esto la diferencia de la seguridad RLS, que ya existía en Power BI y que se aplica a registros:

El principal problema de OLS
Como vimos en ese mismo tutorial anterior, al ocultar ciertos campos a algunos usuarios a través de OLS las visuales del informe que se alimentan de ese campo aparecen con errores:

Incluso os propusimos una solución en este tutorial a través de un botón dinámico. Pero la solución no es del todo “elegante” y ahora tenemos una opción mucho más potente que nos permite más opciones: Los nuevos “Parámetros de Campo” de Power BI.
Parámetros de Campo de Power BI
En Power BI ya existían los parámetros “What if?” que nos permitían crear simulaciones en base al valor de un parámetro definido y añadido manualmente (no pertenecía al modelo de datos original).
Ahora podemos disponer de otro tipo de parámetros (de campo) que nos permite lo mismo, pero con los campos o medidas de nuestro modelo.
Lo primero que tendréis que hacer es activar esta nueva función ya que está en “Preview“. Para ello, en Power BI Desktop debes ir a Archivo > Opciones y Configuración > Opciones:

En la ventana emergente debemos seleccionar Características de versión preliminar > Parámetros de Campo (tendréis que reiniciar Power BI Desktop después):

¿Cómo nos ayudan los parámetros de campo con las visuales con errores?
Como vimos, las visuales dan errores porque les falta el campo que hemos ocultado a ciertos usuarios a través de OLS. Por lo tanto, vamos a usar los Parametros de Campo para que muestre otro campo cuando esos usuarios se conecten al informe.
Tenemos que crear dos roles de seguridad en Modelado > Administrar roles:

Hemos creado dos roles:
- ADMIN: para los usuarios que pueden ver el Margen/Beneficio de las ventas.
- SALES: para los comerciales del departamento de ventas, que no deberían ver los márgenes de ventas.
Aparte de estos roles crearemos un “Parámetro de Campo” llamado “Medida Dinámica” en Modelado > Parametros Nuevo > Campos:

En la ventana emergente seleccionamos la medida de % Margen y la de Importe Medio de Pedido (que será la medida que mostraremos a los usuarios que no tienen acceso al margen):

Al pulsar el botón “Crear” veréis que os ha insertado un filtro o segmentación (que podemos eliminar) y una tabla nueva en el modelo de datos con 2 registros (uno por cada medida que hemos seleccionado):

Como queremos que según el usuario que consulte el informe, se vea el % Margen o el Importe Medio de Pedido, debemos sustituir el campo % Margen por la nueva Medida Dinámica en todos los visuales de nuestro informe donde apareciese el % Margen.
En nuestro caso tenemos el campo % Margen en:
- Tarjeta de “Margen (%) vs PRES”
- Tabla Ventas y Margen Por Cliente
- Mapa de Ventas y Márgenes Geolocalizados (usamos el % Margen en el Tooltip)
Al realizar el cambio, Power BI intentará mostrar ambos campos en todas las visuales (no os preocupéis, lo solucionaremos en el siguiente paso):

Ya tenemos el Parámetro y los roles creados. Ahora sólo tenemos que relacionarlos. Necesitamos que según el usuario que consulte el informe, el parámetro muestre en las visuales un campo u otro.
Y para ello usaremos seguridad RLS (seguridad a nivel de registro). Volvemos a la pantalla de Roles e incluimos un filtro en la tabla del parámetro “Medida Dinámica” para que el rol ADMIN solo vea el campo “% Margen” (con id orden 0) y el rol “SALES” sólo vea el registro “Importe Medio de Pedido” (con id de orden 1):


Ahora, si publicamos el informe y asignamos roles a cada usuario con acceso, cada uno verá la información que debe visualizar:
Visión de usuarios ADMIN:

Visión de usuarios SALES:

Si estáis suscritos a nuestra newsletter (es gratis) podréis descargar el informe en formato pbix para ver más en detalle toda la configuración.
Conclusiones
Con esta nueva funcionalidad, podemos resolver el problema de RLS de manera mucho más efectiva y elegante. Aparte nos permite más versatilidad, pudiendo elegir, no sólo ocultar el campo, sino decidir otro campo que mostrarles a los usuarios restringidos.
¿Qué os ha parecido esta opción?¿Habíais usado ya los Parámetros de Campo? ¿Y la seguridad OLS?
Podéis dejar vuestros comentarios y dudas al final de este post.






