Categoría en #PowerBI Visualizaciones

Webinar: Simulación de Seguridad a Nivel de Página con formato condicional y RLS

El pasado martes 28 de julio tuve el placer de impartir un webinar para el PUG de Barcelona en el que profundicé en la simulación de seguridad a nivel de página aplicando tanto RLS como el formato condicional en la navegación. Como insistí en el webinar no es seguridad a nivel de página, ya que si se tiene la URL de la página cualquier usuario puede acceder, pero se ocultan de la navegación la posibilidad de ir a las páginas a las que no se tiene permiso y como no es fácil disponer de la URL de las páginas, pues se puede considerar que cumple la función de que ciertos usuarios puedan no acceder a partes de un informe.

Os dejo el enlace al video que el PUG de Barcelona ha subido a Youtube para que podáis verlo.

Considero muy interesante la opción que planteo de crear la tabla de páginas automáticamente utilizando como origen el archivo layout del propio pbix.

La verdad es que estoy muy contento con el resultado final del webinar y el encuentro con posterior ciberquedada que contó con la presencia de Ana María Bisbé fue muy gratificante.

Os dejo también un enlace a los materiales:

https://github.com/PUG-Barcelona/general/tree/master/Eventos/20200728_RLS_Seguridad_P%C3%A1ginas

Configurar mediante un tema personalizado los encabezados de objetos visuales

De vez en cuando me da por trastear las entrañas de power bi para descubrir cosas nuevas. Hoy me planteaban una duda, ¿de qué manera se pueden configurar los encabezados de objeto visual para que no aparezca ningún icono pero no se impida al usuario exportar los datos a excel, por ejemplo.

En cualquier objeto visual, existe la opción de Activar o desactivar el encabezado del objeto visual

Y una vez activa, se pueden habilitar unos u otros encabezados según convenga:

Puedo desactivar todos y dejar activo el Icono Más opciones.

Pero si quiero automatizar este proceso, en todos los objetos visuales es tremendamente laborioso.

Lo primero que pensé fue en el generador de temas de powerbitips.com pero ellos contemplan la posibilidad de activar o desactivar el Encabezado completo, pero no unos iconos sí y otros no.

Busqué a ver si encontraba la solución por algún lado y no la encontré, hasta que recordé como descubrí los nombres de los iconos cuando salió el formato condicional y que Matt Allington mencionó en su blog:

https://exceleratorbi.com.au/power-bi-icon-names/

Seguro que en mi querido layout estaba la solución. Puse mis encabezados como activos, desactivé todos los iconos y comencé a bucear en el layout del pbix con el que estaba trabajando para descubrir como generar el código y efectivamente, logré que funcionara.

Personalizando el visual header desde power bi tips conseguí el siguiente código:

{"name":"theme created by powerbi.tips https://themes.powerbi.tips",
"visualStyles":
{"": {"":{"visualHeader":[{"show":true]}}}}
}

Sólo me quedaba descubrir cómo desactivar unos u otros iconos a mi antojo y en el layout estaban sus nombres.

{"name":"personalizado","dataColors":["#c1a131","#374649","#FD625E","#F2C80F","#5F6B6D","#8AD4EB","#FE9666","#A66999",
"#3599B8","#DFBFBF","#4AC5BB","#5F6B6D","#FB8281","#F4D25A","#7F898A","#A4DDEE","#FDAB89","#B687AC","#28738A","#A78F8F",
"#168980","#293537","#BB4A4A","#B59525","#475052","#6A9FB0","#BD7150","#7B4F71","#1B4D5C","#706060","#0F5C55","#1C2325"],
"visualStyles":
{"*":{"*":
{"visualHeader":[{"show":true,
"showVisualInformationButton":false,
"showVisualWarningButton":false,
"showVisualErrorButton":false,
"showDrillRoleSelector":false,
"showDrillUpButton":false,
"showDrillToggleButton":false,
"showDrillDownLevelButton":false,
"showDrillDownExpandButton":false,
"showPinButton":false,
"showFocusModeButton":false,
"showSeeDataLayoutToggleButton":false,
"showFilterRestatementButton":false,
"showOptionsMenu":true}]}}}}

Con este código, poniendo true o false según nos interese, podemos ocultar o mostrar programáticamente vía tema personalizado los encabezados de los objetos visuales, actuando sobre todos por defecto de esa manera o, si solo queremos que actúe en un objeto visual concreto, simplemente debemos sustituir el segundo asterisco por el nombre que la visual tiene en inglés (p. ej. Pie Chart)

El tema aparece con extensión .pdf pero es un .json, sólo hay que cambiarle la extensión y funciona.

Creación y edición de mapas de formas

Últimamente, por necesidad, los proyectos siempre mandan, he tenido que aprender a editar mapas para crear mapas de formas personalizados. Incluso me he aventurado en proyectos de mapas de formas con drilldown a partir de una jerarquía administrativa con el custom visual map drilldown choropletic, pero empecemos por lo más sencillo, como crear un mapa de formas personalizado a partir de uno ya existente.

Vamos a necesitar varios elementos.

1º El mapa al nivel administrativo que lo necesitemos en formato shape o geojson. Podemos descargar los datos de los Municipios españoles por ejemplo desde este enlace:

https://data.opendatasoft.com/explore/dataset/espana-municipios%40public/export/?location=5,36.12825,-6.91667&basemap=jawg.sunny  en formato shapefile o geojson

2º El programa de edición Qgis que es software libre y podéis descargar desde su página oficial: https://www.qgis.org/es/site/forusers/download.html

3º Utilizaremos también el programa online Mapshaper (https://mapshaper.org/ ) para transformar nuestra creación al formato topojson admitido en el mapa de formas.

Descargamos el archivo españamunicipios en nuestro pc y lo descomprimimos en la carpeta c:/ para tenerla fácilmente localizada (o donde queráis)

Abrimos el programa Qgis. Yo tengo la versión 3.12. Vale cualquier versión.

Creamos un nuevo proyecto y cargamos en las capas el mapa en formato shape con el que queramos trabajar. En este caso voy a trabajar con el archivo de municipios de la península, Baleares y Canarias que hemos descargado

Sobre este mapa tal cual podríamos sin problema crear el archivo topojson completo desde la página mapshaper.org pero lo que vamos a aprender es a extraer partes más pequeñas por si necesitamos un mapa concreto. En este ejemplo vamos a extraer el mapa municipal Madrid.

Lo primero que vamos a hacer es identificar algún municipio de Madrid para ver cómo podemos realizar el filtro.

Hacemos un poco de zoom en el mapa y le damos al botón de identificar objetos espaciales, la i de info y pinchamos en el centro un municipio que pueda corresponder a la provincia de Madrid.

Se nos abre la siguiente pestaña de información

y podemos ver que hay un campo provincia por el que podremos filtrar

Damos a botón derecho sobre la capa y en el menú elegimos filtrar:

Y en la expresión de filtrado ponemos provincia=’Madrid’

Las comillas que utilizamos son las mismas que en los comandos en SQL

Le damos a Aceptar y ya tenemos el mapa filtrado:

Vovemos a dar a botón derecho sobre la capa y seleccionamos Exportar/Guardar Objetos como y lo exportamos como archivo GeoJSON manteniendo todos los campos de información que contiene el shape.

Podemos ya cerrar Qgis y nos vamos a https://mapshaper.org/

Seleccinamos el archivo GeoJSON guardado y lo importamos  y podemos ver el mapa de Madrid y la información que contiene el mapa

Le damos a exportar y lo convertimos en topoJson para que nos sirva para el mapa de formas de Power BI

Ahora ya con ese TopoJson en Power BI podemos utilizarlo como mapa de formas y utilizar el archivo json para extraer los datos de identificación de cada zona, que tendremos que casar de alguna forma con los datos del municipio que tengamos en nuestra base de datos bien por nombre o bien por los identificadores varios que pueden aparecer en la información del mapa, eso ya os lo dejo a vuestra imaginación.

He creado un proyecto en github donde poder subir todos los mapas de formas que vaya generando para mi trabajo. Y allí tengo un proyecto de mapa con drill down que si resulta interesante puedo plasmar en este blog como lo he realizado.

https://github.com/FMullor/TopoJson

Crear un botón de eliminación de filtros con Marcadores

Vamos a explicar en este post como hacer un botón de eliminación de filtros mediante un marcador.

Partimos del siguiente informe de ventas basado en el modelo de Adventureworks

El usuario puede establecer diferentes filtros de país y de vendedor para cambiar los contextos de análisis. Así, por ejemplo podríamos ver las ventas de JAE B PAK en Canadá en el 2019:

O las ventas de AMY E ALBERTS en Francia:

En la parte superior derecha he colocado una imagen de un embudo con una X para eliminar los filtros. Vamos a ver cómo creo un marcador que me elimine los filtros manteniéndome el Ejercicio 2019.

Primero elimino todos los filtros menos el del ejercicio que lo quiero mantener.

En segundo lugar creo un marcador, una imagen fija de ese momento, sin filtros salvo del del ejercicio 2019. En el panel de marcadores le doy a Agregar lo renombro por ejemplo a “SIN FILTROS” y le dos a los tres puntos(…)

Importante en el momento de darle a actualizar debemos tener marcado el check de Datos. Si desmarcásemos ese check, nos mantendría cualquier filtro que el usuario hubiera establecido en su navegación, sin embargo, manteniendo el check de Datos nos va a llevar a la imagen exacta de la visual tal y como la tenemos ahora, sin filtros de Pais o Vendedor y con el filtro del Ejercicio 2019. Si queremos que tampoco nos filtre de inicio el Ejercicio podemos hacerlo actualizando con el filtro del ejercicio desmarcado.

Una vez creado este marcador seleccionamos la imagen que hemos puesto para desmarcar los filtros:  

Nos vamos a formato de Imagen y allí activamos la acción:

Indicándole en TIPO: Marcador

En Marcador; EliminarFiltros (o como le hayamos llamado al marcador que hemos creado)

Y en información sobre herramientas lo que queramos que nos muestre el tooltip al pasar sobre la imagen.

De esta manera, podemos establecer los filtros que queramos en el informe y al presionar la imagen de eliminación de filtros (con ctrl+botón izq mouse en en el desktop) nos va a eliminar cualquier filtro que tengamos seleccionado ya que nos lleva al marcador que teníamos sin filtros.