Power BITutoriales

Tutorial Power BI: Cómo evitar el error de OLS cuando ocultas campos

Este tutorial ha quedado obsoleto, y hemos creado una solución mejor para los errores de visualización de gráficos con OLS gracias a la nueva funcionalidad de Parámetros de Campo. Podéis consultar el nuevo tutorial en este link.

En una entrada anterior os mostramos Cómo usar OLS en tus informes de Power BI a través de una sesión que hice en el Microsoft 365 Cabo San Lucas 2021. OLS es la Seguridad a Nivel de Objeto en Power BI y os permitirá ocultar tablas enteras o campos según el rol de los usuarios.

El problema que vimos en la demo es que, cuando accedes con el rol restrictivo (que no tiene acceso a ciertos campos o tablas), las visuales que contengan ese campo aparecerán con el siguiente error:

Error OLS en visual
Error OLS en visual

Si pulsamos en el link de “Ver Detalles” nos aparecerá lo siguiente:

Detalle del error OLS en visual
Detalle del error OLS en visual

En este ejemplo hemos ocultado el campo “Beneficio” para este rol y la medida Margen(%) que se muestra en la visual se calcula a partir de este campo.

Por ello tienes que tener en cuenta al ocultar campos con OLS:

  • Para el rol restringido, ese campo o tabla oculto no existe.
  • Por lo tanto, afecta a los campos ocultos y a cualquier medida que los utilice.
  • Cualquier visual de tu informe que use ese campo o una medida relacionada dará error.
  • Incluso si el campo o medida solo esta en los tooltips (Información de herramienta) dará error.

Solución 1: Usar la función DAX IFERROR()

¡Spoiler Alert!: No funciona. Pero es necesario pasar por este paso para entender que la solución no es tan sencilla.

Lo primero que se me ocurrió es usar una medida con la función DAX IFERROR(). Esta función nos permite mostrar un medida y si da error, mostrar otro valor. Podéis ver la documentación oficial de IFERROR en este link.

Por ello, cree la siguiente medida:

Margen (%) 2 = IFERROR([Margen (%)],"-")

De esta manera, si nuestra medida de Margen (%) da error debería devolver el valor ““.

Si sustituimos la antigua medida de Margen por la nueva y accedemos con el rol restrictivo veremos que aparece el mismo error.

¿Qué ha fallado?

Ha fallado que esta medida no se puede ejecutar porque depende del campo Beneficio que para ese usuario no existe (no está en la tabla). Es uno de los tipos de error que IFERROR no puede manejar. IFERROR puede gestionar una división por cero o problemas similares, pero no puede evaluar si es error o no una fórmula con un campo que no existe.

Solución 2: Seguridad a nivel de Registro y Navegación

Nuestra segunda solución se basa en mostrar el informe de una manera u otra en base al rol que se conecte al mismo. Queremos un informe que cambie según que rol se conecte y para eso haremos los siguientes pasos:

  • Crear una pestaña inicial de Portada solo con un botón.
  • Crear un duplicado de nuestra pestaña y realizar pequeños cambios en la segunda pestaña.
  • Ocultar ambas pestañas.
  • Aprovechar los 2 roles creados para OLS para implementar RLS.
  • Hacer una navegación dinámica en base a una función.

El informe mostrará una sola página con un botón que dependiendo del rol te llevará a una pestaña con todos los datos o a otra con la información capada.

Esquema de la Solución
Esquema de la Solución

Paso 1: Pestaña de Portada

Creamos una nueva pestaña y le incluimos un botón central con la opción de menú superior Insertar > Botón:

Opción Insertar Botón en Power BI
Opción Insertar Botón en Power BI

En las propiedades de Formato del Botón le podemos añadir el texto “Acceder al informe” y cambiar los colores del fondo y borde del botón:

Texto del botón en Power BI
Texto del botón en Power BI

Paso 2: Crear un duplicado de nuestra pestaña con cambios

Para crear un duplicado de una pestaña sólo tienes que pulsar con el botón derecho del ratón sobre la pestaña a copiar y elegir la opción Duplicar página:

Duplicar página de un informe en Power BI
Duplicar página de un informe en Power BI

A la primera pestaña (original) la llamaremos “1” y a la segunda “2”.

Sobre la segunda pestaña haremos algunos cambios para evitar el mensaje de error en el campo Beneficio oculto para el rol “Sales”:

  • Eliminaremos las visuales de Margen y Margen % de los KPIs en la zona superior.
  • Eliminaremos el campo Margen (%) de la tabla de Ventas y Margen por Cliente en la zona inferior.
  • Eliminaremos el campo Margen (%) de los tooltips (Información sobre herramienta) del mapa.

Con esto hemos corregido/eliminado las visuales con errores para el rol más restringido de “Sales”.

Paso 3: Ocultar ambas pestañas (1 y 2)

El objetivo es que no se pueda acceder al informe (pestañas 1 y 2) directamente sin pasar por la portada con el botón que hemos creado. Por eso las ocultamos y solo se podrá acceder a ellas a través de la navegación del botón “Acceder al informe”.

Para ocultar las dos pestañas el proceso es similar al de Duplicar Página. Pulsamos con el botón derecho del ratón sobre cada pestaña y seleccionamos Ocultar Página:

Ocultar página de un informe en Power BI
Ocultar página de un informe en Power BI

Paso 4: Implementar RLS en ambos roles

Hemos creado 2 roles para implementar OLS:

  • ADMIN: con acceso a toda la información
  • SALES: con acceso a todos los datos excepto el campo BENEFICIO y las medidas que dependan de él.

Vamos a crear una tabla manual (opción Inicio > Crear tabla nueva) con el código y nombre de ambos roles:

Tabla con los roles creada manualmente
Tabla con los roles creada manualmente

Ahora iremos al menú de Roles en Modelado > Administrar Roles y pondremos un filtro DAX en cada rol para que sólo pueda ver el registro de esta tabla de su rol:

Condición DAX para RLS del rol Admin
Condición DAX para RLS del rol Admin

En el caso de ADMIN filtraremos que sólo vea el Código = “1” de la tabla Roles y en el caso de SALES que sólo vea el Código = “2”.

Paso 5: Implementar al navegación del botón en base al rol

Por último, haremos que el botón te lleve a una pestaña u otra en base a tu ROL.

Para ello en la propiedad de Formato “Acción” seleccionamos el Tipo “Navegación de Página“:

Tipo Navegación de Página
Tipo Navegación de Página

En “Destino” pulsaremos en la opción “Fx” para introducir un destino condicional:

Destino con fórmula condicional
Destino con fórmula condicional

Para configurar el destino condicional pondremos la siguiente opción:

Configuración de Destino Dinámico del botón
Configuración de Destino Dinámico del botón

El objetivo es que con el filtro RLS cada Rol solo ve “su” registro en la tabla de roles y, por lo tanto:

  • el ROL ADMIN verá como primer código “1” e irá a la pestaña 1
  • el ROL SALES verá como primer código “2” e irá a la pestaña 2

Y así conseguimos que cada rol vea el informe con la información capada pero sin mensajes de error.

Recordad que si os suscribís a nuestra newsletter (es gratis) podréis descargar el fichero pbix original de este tutorial.

Info Extra: No funciona con marcadores

Alguno puede pensar que no hace falta crear 2 pestañas y que se podría crear en una sola: con visuales superpuestas y marcadores.

La idea es poner una visual superpuesta a la del error con otra medida. Luego crear marcadores con una visual sobre otra y al revés. Por último, el botón tendrá como tipo de Acción “Marcador” y nos llevará a un marcador o a otro como hicimos en nuestro tutorial de Navegación avanzada en Power BI.

Esta opción es más limpia y es la primera que se me ocurrió, pero el tipo de acción “Marcador” incomprensiblemente aún no admite Destinos condicionales:

Acción Tipo Marcador no admite funciones condicionales
Acción Tipo Marcador no admite funciones condicionales

Conclusiones

Como veis no es fácil corregir este error. Espero que Microsoft vaya evolucionando OLS para que no haga falta realizar todo este trabajo para no mostrar los mensajes de error y que pueda ocultar las visuales o poner un mensaje distinto.

El problema es que este mensaje que aparece ahora puede confundirse con un error en el diseño del programa y el usuario puede pensar que el informe esta mal diseñado.

¿Vosotros lo habéis probado? ¿Habéis encontrado otra solución? Contádnoslo en comentarios.

¡SUSCRÍBETE YA!
Doy mi consentimiento para almacenar mis datos para envío de newsletters.
Si te suscribes a la newsletter tendrás acceso a los <b><u>ficheros Power BI originales</u></b> de nuestros tutoriales y post. <br><br>Además tendrás derecho a participar en sorteos periódicos que realizaremos en el blog.
We hate spam. Your email address will not be sold or shared with anyone else.
Mostrar más

Iván Arribas

Llevamos siglos generando, relacionando, modificando y almacenando datos....es hora de que les echemos un vistazo. Espero que este blog sirva de ayuda a los que quieran introducirse en este mundo de la Analítica de Datos, igual que me está sirviendo a mi.

Publicaciones relacionadas

Un comentario

  1. Pingback: Tutorial Power BI: Parámetros de Campo para solucionar visuales con OLS - Vandalytic - tu blog de Power BI y más en español

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Iván Arribas Delgado.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Bluehost que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Botón volver arriba
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad