En este artículo veremos cómo, con una sencilla técnica dentro de Power BI Desktop, podemos definir las páginas de un informe que cada usuario puede visualizar.
Una cultura basada en datos es crucial para que los negocios prosperen en el entorno actual. La base de esta cultura es la capacidad de brindar información oportuna a todas las personas de su organización a través de todos sus datos, a partir de los cuales los usuarios de negocio tomarán decisiones y llevarán a cabo acciones basadas en los conocimientos que encuentran en los mismos.
Cada día, más organizaciones están utilizando Power BI para llevar a cabo esta labor, por lo que se vuelve cada vez más importante para las organizaciones tener la capacidad de gobernar este escenario de BI de forma efectiva cumpliendo con las regulaciones y con sus propios requerimientos de seguridad.
Hasta ahora, Power BI nos permitía definir políticas de acceso condicional a su servicio que proporcionen controles contextuales a nivel de usuario o grupo, ubicación, dispositivo y aplicación; permitiendo así que cada usuario accediera a los datos necesarios para desempeñar sus labores.
Con la nueva actualización de mayo, Power BI nos permite dar un paso más a la hora de definir los contenidos a los que puede acceder cada usuario, la seguridad a nivel de página.
En este artículo veremos cómo, con una sencilla técnica dentro de Power BI Desktop, podemos definir las páginas de un informe que cada usuario puede visualizar.
Si quieres dar forma a tu proyecto con Power BI, en Verne Academy podemos guiarte en el proceso (mentoring), ayudarte a su desarrollo mediante nuestro framework, así como formarte en aquellas áreas que necesites. Consulta todos nuestros cursos de 0 a experto con Power BI, desde nuestro curso de Power BI para usuarios de negocio hasta formación más avanzada como DAX, Data Governance o Power Query.
Seguridad a nivel de página
Hasta ahora, Power BI Desktop nos permitía establecer navegación a través de páginas mediante marcadores, pero con la nueva actualización se añade esa función dentro de las acciones que puede desempeñar un botón. Además, nos solo nos permite establecer la página destino a la que nos llevará, sino que nos permite, mediante una medida, hacer que ese cambio de página sea condicional.
Para llevar a cabo esta labor, en primer lugar, deberemos definir dos tablas previas para controlar tanto los usuarios y su acceso, como las páginas que tiene nuestro informe y las acciones correspondientes. En este ejemplo vamos a definir únicamente dos usuarios, pero podría ser cualquier número.
Como vemos, se han definido dos usuarios, uno con el rol de administrador y otro de explorador. La idea será permitir al usuario administrador ver todas las páginas del informe, pero el usuario explorador solo tendrá acceso a la página de inicio.
El siguiente paso será crear un slicer con las páginas a las que podemos acceder desde cada una dentro del informe.
En el slicer meteremos la columna Menu, definida en las tablas anteriores. En este caso se ha utilizado un filtro para mostrar solo las opciones posibles y no mostrar la página actual, pero eso es opcional.
Por último, quedará crear el botón que nos permitirá navegar a la página que seleccionemos dentro del slicer. Como se ha mencionado antes, en el botón se podría directamente definir la página objetivo o apuntar directamente a la columna Action, definida en las tablas anteriores y todo funcionaría correctamente, pero el objetivo es que solo los administradores puedan ver estas páginas.
Para poder configurar este botón, lo primero será crearnos una métrica a través de la cual comparar el usuario actual con los roles de la tabla de usuarios. La métrica será la siguiente:
Rol = LOOKUPVALUE(Users[Rol], Users[User], USERNAME())
Con esta métrica, accederemos a la tabla de usuarios y obtendremos el rol que tiene asignado el usuario que esté viendo el informe. Por lo cual, para que la navegación funcione, tendremos que tener todos los usuarios que vayan a acceder al informe definidos y con su rol asignado.
El siguiente paso será crear la métrica que defina el destino al que nos llevará la navegación, el código DAX es el siguiente:
NavigationAction = IF([Rol] == "Administrador", SELECTEDVALUE(Menu[Menu]), "Without Permission")
La lógica es simple, si el rol del usuario es Administrador, la métrica apuntará al valor seleccionado del slicer; en cambio, si tiene otro rol asignado, la opción escogida será Without Permission. Otro punto a tener en cuenta es que tendremos que crear esa página en nuestro informe para que la navegación pueda llevarnos a ella.
Con la métrica de navegación lista, ya solo nos quedará incluir el botón en nuestro informe y configurarlo. En este caso hemos utilizado un botón en blanco para mostrar el texto, pero podría ser cualquier tipo de botón y funcionaría de la misma manera.
Para definir la acción que llevará a cabo el botón, una vez seleccionado, en el menú Visualizaciones, dentro de Acción, definiremos su tipo como Navegación de Página y en la opción Destino seleccionaremos el icono Función. Dentro del menú que se abre, seleccionaremos la métrica previamente creada NavigationAction.
Ahora ya solo nos quedará ocultar las páginas cuyo acceso queremos limitar y tendremos nuestra seguridad a nivel de página definida.
Vamos a publicar el informe en el Servicio de Power BI y vamos a probar si todo funciona correctamente.
Primero vamos a acceder con un usuario con permisos de administrador, y veremos como todo funciona de forma normal.
Ahora probemos a acceder con un usuario que no tenga permisos de administrador.
Curso de Seguridad en Power BI
Personalización de los botones
Con los pasos anteriores ya tendríamos definida seguridad a nivel de página para nuestro informe, pero aún podemos llevar esto más allá. Aparte de configurar de manera condicional la navegación de página mediante acciones de botones, también podemos personalizar dichos botones para hacerlos más intuitivos y atractivos de cara al usuario.
Power BI nos permite personalizar varios aspectos de los botones de manera condicional, en este caso vamos a ver cómo configurar el color que se muestra al pasar por encima del botón, tanto en el caso de tener permisos como de no tenerlos, y el tooltip que se nos mostrará; aunque Power BI nos permite configurar muchas cosas más.
En primer lugar, vamos a configurar el color de fondo del botón, para ello tendremos que crear una nueva métrica con el siguiente código:
Color = IF([Rol] == "Administrador", "#57B956", "#D82C20")
La lógica es simple, si el rol del usuario actual es Administrador, la métrica apuntará a un color, y en caso de no ser Administrador apuntará a otro.
Una vez creada la métrica, seleccionamos el botón, vamos al campo Rellenar, dentro del menú Visualizaciones, seleccionamientos la opción Al pasar el cursor y añadimos esta métrica como función en el campo Color.
El resultado es el siguiente:
El siguiente paso será modificar el tooltip que se nos mostrará al pasar por encima del botón para ambos casos, para ello utilizaremos de nuevo una métrica con una lógica muy similar a la anterior.
Tooltip = IF([Rol] == "Administrador", "You have the right permissions", "You don't have the right permissions")
Como vemos, la lógica es muy similar, si nuestro rol es Administrador veremos el primer texto y si tenemos otro rol veremos el segundo.
Para configurar el tooltip condicional deberemos seleccionar nuestro botón, ir a la opción Acción, dentro del menú Visualizaciones, y apuntar en Información sobre herramientas a nuestra métrica.
Con esto ya tendríamos nuestro tooltip condicional configurado.
Hemos visto que gracias a las nuevas funcionalidades añadidas a Power BI, cosas que antes resultaban muy costosas o que no podíamos implementar, como la seguridad a nivel de página, se vuelven una tarea sencilla. Pero lo visto aquí es solo la punta del iceberg, os animamos a que lo llevéis un paso más allá.