Power BI es una herramienta que permite la carga, el procesamiento y la transformación de datos (data mash-up) obtenidos a partir de fuentes heterogéneas, con la finalidad de convertirlos en información relevante para la toma de decisiones dentro de la organización. A través de un poderoso motor de representación gráfica (Power View), podemos mostrar a los usuarios la información con el aspecto de informes o cuadros de mando, formados por diversos componentes visuales, mediante los cuales analizar el sistema desde diferentes perspectivas.

El objetivo, por lo tanto, del presente artículo, consistirá en introducir al lector en el uso del módulo de visualización de Power BI, ilustrando el proceso de creación de informes mediante la utilización de algunos de los controles más representativos. Como origen de datos emplearemos el padrón de habitantes, fuente que venimos utilizando en el resto de artículos dedicados a esta introducción sobre las diferentes fases de creación (carga, depuración, modelado, etc.) de un sistema de análisis con Power BI.

 

Diseñador Report. Sección Format

En el artículo dedicado a la creación del modelo de datos, realizábamos un primer acercamiento a este diseñador, por lo que asumiendo que el lector ya conoce los pasos básicos allí explicados, vamos a retomar el control Card, que usábamos como ejemplo para visualizar la cantidad total de individuos existente (medida PoblacionTotal), pero en esta ocasión profundizando en las propiedades de formato (panel Visualizations, sección Format) pertenecientes a este objeto visual. Recordemos en la siguiente figura la apariencia inicial de este control, una vez situado el mismo en el área de diseño y asignada la medida a mostrar.

La sección Format organiza las propiedades relativas al aspecto del control mediante diversos apartados con forma de panel desplegable. A continuación, recorreremos estos apartados para mostrar progresivamente el efecto de transformación sobre el control, a medida que vayamos asignando valores a las propiedades correspondientes.

Comenzaremos por Data label, donde cambiaremos el formato numérico de la medida seleccionando el valor None en la propiedad Display units; de esta manera lograremos que se muestre el valor completo. También cambiaremos el tamaño de la medida, color y fuente.

A continuación desplegaremos el apartado Category label, donde modificaremos las propiedades correspondientes al literal del nombre de la medida visualizada: color, tamaño y tipo de fuente.

Existen ciertos apartados, como es el caso de Title, cuyas propiedades se encuentran, de inicio, desactivadas (interruptor en Off).

Dicho apartado nos permite escribir un título para el control y darle formato, por lo que tras mover el interruptor a la posición On, cambiaremos los valores de estas propiedades para crear dicho título.

Los dos últimos apartados que trataremos, Background y Border, servirán para añadir un color de fondo (con un nivel de transparencia opcional) al control y un borde respectivamente; con esto terminaremos su configuración visual.

 

Visualizando múltiples métricas con el control Multi-row card

En el caso de que necesitemos mostrar simultáneamente varias medidas del modelo utilizaremos este control, muy similar a Card en cuanto a concepto y configuración, situando los valores a visualizar en la propiedad Fields. Para este ejemplo usaremos las medidas ProporcionJovenes, ProporcionAdultos y ProporcionMayores.

Según avancemos en el trabajo de configuración visual de los controles comprobaremos que comparten un número variable de propiedades, lo que supone una gran ventaja, ya que el conocimiento adquirido podremos reutilizarlo más rápidamente, reduciendo así la curva de aprendizaje necesaria para dominar este aspecto de la herramienta.

Respecto a la configuración visual, en la siguiente figura observamos las propiedades de la sección Format que vamos a modificar, organizadas por sus apartados.

A continuación se muestra el resultado del control tras estas labores de formato.

 

Stacked bar chart. Representación gráfica de la información

Si bien hasta el momento hemos mostrado los datos en formato numérico, la potencia de una herramienta como Power BI reside en su capacidad de ofrecer información a través de objetos gráficos de tipo estadístico (barras, columnas, etc.), por lo que a continuación utilizaremos el control Stacked bar chart para analizar la población por grupos de edad.

Después de añadir una copia de este control en el área de diseño, asignaremos a las propiedades de datos Axis y Value el campo EdadDecenal de la tabla Edad, y la medida PoblacionTotal de la tabla PoblacionPadron respectivamente.

Puesto que los literales y títulos de los ejes tienen un tamaño predeterminado muy reducido y resultan difíciles de leer, a continuación modificaremos las propiedades de la sección Format mostradas en la siguiente lista, como primera mejora del control, añadiendo además un título principal al mismo.

 

Ahora que la información resulta más legible, podemos seguir optimizando la apariencia del control destacando las líneas verticales (Gridlines) con un color, grosor y tipo de línea distinto del que existe por defecto. Como fondo del área de dibujo aplicaremos una imagen usando las propiedades del apartado Plot Area, mientras que las propiedades del apartado Data labels nos servirán para mostrar unas etiquetas con el valor que representa cada barra del gráfico.

 

Si queremos resaltar un determinado valor de la medida representada por el control, en la sección Analytics emplearemos las propiedades del apartado Constant Line, para dibujar una línea en el punto correspondiente al valor de la medida introducida en la propiedad Value, asignando un color, grosor y otras propiedades que nos permitan destacarla. Para finalizar ordenaremos los datos por el campo EdadDecenal, haciendo clic en el botón More options (puntos suspensivos) situado en la esquina superior derecha y eligiendo la opción Sort By EdadDecenal.

Después de estas acciones de formato, el control visualizará la población por grupos de edad decenal como vemos en la siguiente figura.

 

Creación de columna para establecer el orden de los elementos visuales

Observando con detalle los rangos de edad del gráfico, habremos notado que la barra correspondiente al grupo 5-14 está incorrectamente ordenada. Esto es debido a que el orden actual se está realizando por los literales (valores de texto) de los grupos.

Para evitar este comportamiento y conseguir que el orden de los elementos se adapte a nuestros requerimientos, en este tipo de situaciones se recomienda crear en la fuente de datos, ya sea desde el propio origen, a nivel de tabla en Power Query, o incluso desde el modelo de datos (como veremos en el siguiente apartado), una columna que establezca el orden de los valores a visualizar.

Dentro del ejemplo que estamos desarrollando, la solución consistirá en abrir el Query Editor, y posicionados en la tabla Edad, seleccionar la opción de menú Custom Column, grupo General, pestaña Add Column, para crear una  columna que llamaremos EdadDecenalOrden (Whole Number), en la que para cada criterio de intervalo de edades asignaremos un número de orden.


if [EdadID] = 0 then
1
else
if [EdadID] >= 1 and [EdadID] <= 4 then
2
else
if [EdadID] >= 5 and [EdadID] <= 14 then
3
else
if [EdadID] >= 15 and [EdadID] <= 24 then
4
else
if [EdadID] >= 25 and [EdadID] <= 34 then
5
else
if [EdadID] >= 35 and [EdadID] <= 44 then
6
else
if [EdadID] >= 45 and [EdadID] <= 54 then
7
else
if [EdadID] >= 55 and [EdadID] <= 64 then
8
else
if [EdadID] >= 65 and [EdadID] <= 74 then
9
else
if [EdadID] >= 75 and [EdadID] <= 84 then
10
else
if [EdadID] >= 85 then
11
else
12

Como siguiente paso nos situaremos en esta misma tabla pero desde el diseñador Data, seleccionaremos la columna EdadDecenal y a continuación la opción de menú Sort by Column, del grupo Sort, pestaña Modeling, donde elegiremos la columna EdadDecenalOrden como la encargada de realizar el orden.

Volviendo a la página del informe en la que tenemos el control Stacked bar chart, comprobaremos que las barras del gráfico ya se han ordenado correctamente.

Otra tabla del modelo que sufre este mismo problema es TamMunicipioResidencia, aunque la técnica que aplicaremos para ella será distinta. En este caso, también desde el Query Editor, seleccionaremos la opción Duplicate Column, del grupo General, en la pestaña Add Column, creando de esta manera una copia de la columna.

A continuación cambiaremos el nombre de la nueva columna por TamMunicipioResidenciaOrden, y su tipo de dato a Whole Number. Para terminar modificaremos, en la fila que identifica a las capitales de provincia, el valor 0 de la columna de orden por 99, de forma que en la visualización de datos, las capitales aparezcan después de la categoría de municipios con mayor número de habitantes (250001 a 500000). En la pestaña de menú Home, grupo Transform, ejecutaremos la opción Replace Values para realizar esta modificación.

Como ejemplo demostrativo de visualización de este campo utilizaremos un control Funnel, en el que asignaremos la medida PoblacionTotal a la propiedad Values, y el campo TamMunicipioResidencia en la propiedad Group.

Si fuera necesario, en la tabla TamMunicipioNacimiento, que tiene la misma estructura, aplicaremos esta transformación de igual manera.

 

Diseñador Data. Generar nueva información desde el modelo de datos

Aunque como ya hemos tenido ocasión de comprobar, los datos de origen de un modelo se obtienen habitualmente de una fuente externa, siendo previamente preparados desde el Query Editor (Power Query – M), para convertirse seguidamente en información mediante los diseñadores Data y Relationships (Power Pivot – DAX), resulta posible crear nueva información directamente en la fase de modelado, utilizando el diseñador Data y expresiones en lenguaje DAX.

Supongamos que para la elaboración de uno de los informes, necesitamos una forma de diferenciar la población española y extranjera a través de un control Pie chart. Una posible forma de abordar esta situación sería disponer, en la tabla PoblacionPadron, de una columna conteniendo el valor 1 en aquellos registros correspondientes a individuos con nacionalidad española (columna NacionalidadID con valor 108) y 2 para el resto de casos (individuos extranjeros), lo que vamos a hacer a continuación.

Abrimos el diseñador Data y nos situamos en la tabla PoblacionPadron; después hacemos clic en la opción New Column, del grupo Calculations, pestaña Modeling, escribiendo la siguiente expresión DAX en su barra de fórmulas.


TipoNacionalidadID =
IF ( PoblacionPadron[NacionalidadID] = "108"12 )

 

El resultado será la creación de una nueva columna en la tabla PoblacionPadron, con el valor 1 para aquellos registros cuya nacionalidad sea España, y 2 para el resto de países.

Seguidamente tenemos que crear la tabla de búsqueda que enlazaremos con estos datos, para lo que haremos clic en la opción de menú New Table, del grupo Calculations, pestaña Modeling, escribiendo el código con la definición y valores de una tabla que llamaremos TipoNacionalidad.


TipoNacionalidad =
DATATABLE (
    "TipoNacionalidad"STRING,
    "TipoNacionalidadID"INTEGER,
{
{ "Español"1 },
{ "Extranjero"2 }
}
)

 

La función DATATABLE de DAX será la encargada de crear la tabla, y a ella le pasaremos como parámetros, en primer lugar, la definición de las columnas, y seguidamente, entre llaves, los registros.

Finalmente, desde el diseñador Relationships, crearemos la relación entre esta nueva tabla y PoblacionPadron.

Pasando al diseñador Report, añadiremos un control Pie chart a una nueva página de nuestro archivo Power BI, que represente visualmente la medida PoblacionTotal en base al campo TipoNacionalidad de la tabla del mismo nombre.

A pesar de que se trata de una característica que, como acabamos de comprobar, funciona correctamente, la generación de nueva información para el modelo es recomendable hacerla, siempre que sea posible, desde la propia fuente de datos origen, o en la fase de preparación de datos con el Query Editor, ya que, si bien el motor analítico de Power BI (xVelocity), permite esta funcionalidad, su uso puede penalizar el rendimiento de las consultas al modelo.

 

Ocultar columnas sin representación visual

De todos los campos que componen las tablas de nuestro modelo, algunos serán utilizados visualmente, formando parte de una o varias páginas del archivo pbix sobre el que estamos trabajando, mientras que otros, tales como identificadores, campos de ordenación, etc., tendrán una finalidad orientada al uso interno, no siendo necesaria su exposición en el diseñador Report.

La forma de ocultar un campo de este tipo consiste en situarnos en el diseñador Data, hacer clic en una tabla para desplegar su lista de campos, y luego clic derecho en el campo a ocultar, seleccionando la opción Hide in Report View, como vemos en la siguiente figura, donde ocultamos el campo EdadID de la tabla Edad.

Tras esta acción, el campo continúa visible, aunque atenuado, desde el diseñador Data, y totalmente oculto en el diseñador Report.

El hecho de que el campo quede completamente oculto en el diseñador Report puede resultar un inconveniente en ciertas situaciones en las que nos interese saber cuántos campos componen una tabla, aunque algunos no vayamos a utilizarlos. Es por ello que podemos activar la visibilidad de los campos ocultos haciendo clic derecho en la tabla y seleccionando la opción View hidden.

La siguiente lista muestra los campos que ocultaremos en nuestro modelo.

 

Jerarquías

Las jerarquías son herramientas que nos permiten analizar la información del modelo a diferentes niveles de detalle, y su proceso de creación ya fue explicado en el artículo dedicado al desarrollo del modelo de datos que actualmente estamos utilizando como ejemplo.

PaisProvinciaMunicipio es la jerarquía que hemos creado en nuestro modelo de datos, encontrándose contenida en la tabla MunicipioPaisNacimiento. Para demostrar sus funcionalidades de navegación añadiremos un control Clustered column chart en una página del informe, en el que situaremos dentro de la propiedad Value la medida PoblacionAdultos de la tabla PoblacionPadron, y en la propiedad Axis la jerarquía PaisProvinciaMunicipio. Después de aplicar algunas opciones de formato para visualizar mejor los literales de los ejes, haremos clic en el botón de la parte superior derecha del control que activa la navegación por la jerarquía.

A continuación haremos clic en la columna correspondiente a España, y como resultado el control actualizará su contenido, mostrando el nivel Provincia. Si volvemos a hacer clic en una de las provincias, descenderemos hasta sus municipios.

Para volver a los niveles superiores de la jerarquía haremos clic en el botón Drill Up, situado en la esquina superior izquierda.

Junto a Drill Up encontramos los botones Go to the next level in the hierarchy y Expand all down one level in the hierarchy, que como indican sus nombres, descienden un nivel en la jerarquía o bien expanden desde el nivel actual hasta el siguiente.

 

Filtros

Mediante un filtro aplicamos uno o varios criterios al modelo de datos, gracias a los cuales obtenemos un subconjunto de su información sobre la que enfocar aspectos más concretos de nuestro análisis. Power BI nos ofrece diversas modalidades de filtro, que podemos utilizar por separado o de forma combinada, para conseguir la mayor precisión posible en nuestros resultados.

Como ejemplo, vamos a volver al punto de partida del control Clustered column chart sobre el que estamos trabajando actualmente, mostrando de nuevo el nivel de países. Observaremos que la columna España refleja al colectivo de individuos más numeroso, lo que puede resultar un inconveniente cuando necesitemos analizar a las personas nacidas en el resto de países, ya que estas columnas apenas son visibles.

En este tipo de situaciones resulta de gran ayuda el uso de un filtro, que ajuste visualmente los elementos del control, por lo que para aplicarlo nos situaremos en primer lugar en el panel Visualizations, sección Format, apartado Filters. Una vez allí, dentro de la propiedad Visual level filters, haremos clic en el nivel Pais; a continuación, en Filter Type, seleccionaremos Advanced filtering, y entre los valores de Show items when the value elegiremos does not contain, para crear un filtro que excluya de la lista de países el valor España, que introduciremos en el cuadro de texto que hay justamente debajo de esta condición.

Para activar el filtro haremos clic en Apply filter, lo que producirá la actualización del control, mostrando los datos de población excluyendo España.

Para eliminar este filtro haremos clic en el icono con forma de borrador situado junto al mismo.

 

Filtros combinados de control y página

Supongamos ahora que necesitamos filtrar la medida que estamos visualizando en el control, de forma que muestre los diez primeros países con mayor número de individuos, pero volviendo a excluir a España. Para lograr este resultado vamos a emplear dos filtros de forma combinada: uno sobre el control visual y otro sobre la página.

En primer lugar aplicaremos el filtro sobre el control de forma similar al anterior ejemplo, solo que en esta ocasión, el tipo de filtro (Filter Type) a elegir será Top N; en la propiedad Show ítems seleccionaremos Top; introduciendo el valor 10 en el cuadro de texto que hay junto a la misma; por último, en la propiedad By value añadiremos la medida PoblacionAdultos y haremos clic en Apply filter.

A continuación, arrastraremos hasta la propiedad Page level filters el nivel Pais de la jerarquía PaisProvinciaMunicipio, aplicando un filtro avanzado que excluya España, como hicimos anteriormente, consiguiendo así que las columnas de los países visualizados muestren un mayor tamaño.

 

Ordenación de los datos en el control

El orden predeterminado mostrado por el control corresponde a la medida seleccionada. No obstante, como vimos en un ejemplo anterior, podemos alterar este comportamiento haciendo clic en el menú More options, situado en la esquina superior derecha del control, donde ordenaremos por el campo Pais seleccionando la opción Sort By Pais. La forma de alternar el modo de ordenación ascendente/descendente, consistirá en volver a hacer clic en la misma opción de orden.

Al seleccionar la opción See Data de dicho menú, se mostrará una tabla con los valores numéricos representados por el control. Para volver a la visualización normal del control haremos clic en la opción Back to Report, en la esquina superior izquierda.

 

Sincronización automática de controles

Dentro de la superficie de diseño de una página podemos ubicar varios controles con la particularidad de que la interacción que efectuemos en uno tendrá consecuencias sobre los demás. Como demostración de esta funcionalidad, en una nueva página de nuestro informe vamos a combinar los controles Card, Stacked bar chart, Pie chart y Funnel, que podemos copiar y pegar en una nueva página desde las páginas de los anteriores ejemplos, o bien volver a crearlos desde cero.

Como ayuda para una mejor ubicación de los controles en la superficie de diseño, tenemos a nuestra disposición las siguientes opciones del menú View:

Show Gridlines muestra una rejilla que actúa como guía para emplazar el control sobre el lienzo de diseño; y Snap Objects to Grid acopla el control automáticamente en las líneas de la rejilla.

Cuando el foco está situado sobre un control, también disponemos de las opciones de menú Align, dentro del grupo Arrange, en la pestaña Visual tools | Format, para alinear de forma rápida el control seleccionado.

Como punto de partida tenemos los datos totales de población del padrón de habitantes. Hagamos clic ahora en la parte del control Pie chart correspondiente a Extranjero, y como resultado, los demás controles de la página filtraran su contenido para adaptarse a la selección realizada; lo que significa que el número contenido en el control Card reflejará ahora la cantidad de población de extranjeros; el control Stacked bar chart resaltará los valores de población por grupos de edad para extranjeros; y Funnel hará lo mismo pero por rangos de habitantes por población; la parte de la barra atenuada será para la población de españoles.

Si ahora hacemos clic en la barra del rango de edad 45-64 del control Stacked bar chart, los demás controles volverán a sincronizarse en base a esta selección, lo que significa que las porciones resaltadas de los controles serán del número de españoles y extranjeros con edades comprendidas en el rango de edad seleccionado, así como la cifra del control Card. Este comportamiento nos proporciona una idea bastante aproximada de la potencia que Power BI ofrece desde su apartado visual.

Para terminar destacaremos la funcionalidad denominada Spotlight, situada en el menu More options, que consiste en enfatizar el control donde se utiliza, atenuando el resto de controles de la página, como muestra la siguiente figura.

 

Conclusiones

En la presente entrega, que concluye esta serie de artículos introductorios sobre Power BI, hemos tratado aquellos aspectos relacionados con el diseño de los controles que componen las páginas de un informe,   mediante los cuales podemos analizar visualmente el sistema de información construido desde el modelo de datos. Espero que los ejemplos expuestos sirvan de ayuda al lector en el desarrollo de sus propios modelos.

 

Agradecimientos

Quisiera expresar mi agradecimiento a María Dolores Esteban Vasallo y Ricard Gènova Maleras, integrantes del Servicio de Informes de Salud y Estudios (Subdirección de Epidemiología, Dirección General de Salud Pública, Consejería de Sanidad. CM) por la ayuda prestada en el diseño de las métricas del modelo de datos, la selección de la fuente de datos utilizada como base para la elaboración del presente artículo, así como una inestimable tarea de revisión del mismo.

 

Enlaces de Interés

Blog de Power BI: https://powerbi.microsoft.com/es-es/blog/tag/power-query/

Power Query: https://support.office.com/en-us/article/Introduction-to-Microsoft-Power-Query-for-Excel-6E92E2F4-2079-4E1F-BAD5-89F6269CD605

PowerPivotPro (Rob Collie): https://powerpivotpro.com/

Radacad: http://radacad.com/blog

Excelguru (Ken Puls): https://www.excelguru.ca/blog/

DataChant: https://datachant.com/