Modelado tabular con Power BI – Herramienta de Inteligencia de negocios

Microsoft Power BI dista de ser una simple herramienta de visualización, tal y como comenté antes . Se trata más bien de una excelente herramienta para desarrollar al completo los procesos de Inteligencia de Negocio o Business Intelligence.

El artículo “Power BI is a model-based tool”,  escrito por el maestro Alberto Ferrari que debía ser de lectura obligada para todos en este gremio, pone las cosas en su sitio en temas del poder de Power BI como herramienta de modelado. Otro ejemplo muy bueno es el de el artículo “Why data modeling is important in #powerbi” escrito por su compañero, el también maestro Marco Russo.

Todo comienza con la consulta a orígenes de datos externos, es el punto de partida para el proyecto de BI. Sobre el rol que cumple Power BI en este sentido puedes leer aquí.

Modelo tabular

El modelo tabular, es uno de los “sabores” de modelado que se pueden crear con Bases de datos SQL Server Analysis Services, el otro “sabor”, que existe desde hace mucho antes es el modelo multidimensional. Hay cierta confusión en este sentido, muchísimas veces me piden cursos sobre «creación de cubos OLAP con Power BI«. No es correcto, Power BI contiene un motor tabular, no multidimensional, que es el encargado de crear y mantener los cubos OLAP.

Además de existir en Power BI (Desktop y Server) encontramos motor de modelo tabular en SQL Server Analysis Services modo tabular, Azure SQL Server Analysis Services modo tabular y en Power Pivot de Excel. En todos los sitios, las bases son las mismas, lo que puede ocurrir es que alguna que otra funcionalidad esté activada en un sitio y no en otro.

El lenguaje para agregar elementos al modelo tabular (columnas calculadas, medidas y tablas calculadas) se llama DAX que significa Data Analysis Expressions.

Para el usuario de negocio todo esto es transparente, forma parte de «la magia» con la que Power BI convierte el resultado de ejecutar las consultas en un modelo de tablas y relaciones.

Tablas y relaciones en el modelo tabular

Cuando estamos desarrollando un proyecto de Business Intelligence con Power BI el punto fuerte de nuestro trabajo es garantizar que el modelo de datos esté debidamente diseñado para que funcione correctamente. Hay que mirar las tablas del modelo y comprobar la correcta definición de las relaciones entre ellas.

Todo el tiempo que dediques a comprobar todas y cada una de las relaciones jugará a tu favor a la hora de crear las visualizaciones y los informes analíticos de tu proyecto de BI. Fíjate en la posición de cada tabla, en el lado que ocupan de la relación, Uno vs Muchos, en las columnas que intentas utilizar y si falla, comprueba que es la columna adecuada y que tiene el tipo adecuado.

Si la tabla está del lado Uno de la relación, todos los valores de la columna que utilizas son distintos y no hay nulos.

Una vez que estés en la fase de visualización si obtienes resultados inesperados, como que el dato no se segmenta para cada filtro o que tienes valores nulos que no deben existir, regresa a comprobar la calidad de las relaciones definidas en tu modelo tabular. Por lo general allí encontrarás el problema y podrás darle solución.

modModelo

Hay dos aspectos que se admiten en la definición del modelo, las relaciones Muchos a Muchos y la Dirección de filtro cruzado. No te lo recomiendo, puede ser muy problemático, a menos que ya seas un experto y estés muy seguro de todas las implicaciones de utilizar este tipo de configuración.

No te compliques, no le hagas a Power BI más difícil el trabajo. Casi siempre, por no ser absoluta, es posible evitarlo. El modelo tabular es suficientemente rico y flexible como para permitirnos dar solución a los escenarios más complejos.  Y si no queda otra, hay que informarse muy bien de los posibles inconvenientes de este tipo de diseño.

Un elemento interesante es que si el modelo es complejo, podemos crear esquemas que segmenten la complejidad y muestren partes del modelo, lo que es bastante más cómodo de trabajar.

ModeloEsquema

Enriquecer el modelo tabular

Vimos antes, en Power BI contamos con una poderosa herramienta de consultas donde creamos las bases para nuestro modelo de datos tabular. Todo no se puede hacer en la consulta y no todo requiere programación DAX.

Es posible asignar propiedades a las columnas y métricas del modelo que ayudan mucho a las futuras acciones de visualización de las mismas. Es posible definir la visibilidad y nivel de agrupación de columnas, así como ajustar los datos de geolocalización, URLs, etc.

Hay escenarios en los que necesitamos perfeccionar el modelo sin programación, desde el menú de opciones de la ficha Modelado. Estas acciones están dirigidas sólo a las columnas que participan en la visualización, si son columnas disponibles para cálculos no es necesario.

Tratar números como discretos

Si tenemos un valor numérico, por ejemplo: número de hijos o estados (1-2-3), que necesitamos utilizar como valor discreto en el eje de un gráfico y no como valor continuo para agregar, asignamos No agregar a la propiedad Agregación.

modNum

Ordenar textos según condición

Ocurre mucho que un atributo descriptivo, una columna de nuestro modelo no se debe ordenar alfabéticamente. El caso más evidente es el de los meses, que no se ordenan «Abril-Agosto», etc. Podemos ordenar una columna según los valores de otra, en nuestro ejemplo, el número correcto del mes para garantizar que se ordene Enero-Febrero, etc.

modDiscreto

Es en Power Query donde creamos las dos columnas y en la ficha Modelado del Power BI Desktop, grupo Ordenar donde definimos la columna que manda en el orden que se aplica a la columna que se utiliza en la visualización.

Mi recomendación es que siempre que el orden de una columna no sea alfabético, sino que se rija por alguna regla, piensa por ejemplo en cosas tan sencillas como «Alto-Medio-Bajo» o «Bien-Regular-Mal«, y siempre que tengas al menos tres posibles valores, debes crear la columna que ordena en Power Query. Si se cumplen esas dos condiciones, debes hacerlo, aunque de casualidad el orden alfabético se corresponda con el orden de la regla, por ejemplo: «Alto-Medio-Muy Alto«. En cualquier momento las etiquetas pueden cambiar.

De esto trata la fase de modelado. Debemos preparar todo lo necesario y todo que sea posible en Power Query y luego, si nos encontramos con nuevas necesidades, regresar a la consulta para ajustar cada punto que sea preciso para el buen funcionamiento el modelo.

El proyecto de Business Intelligence tiene como objetivo final crear y compartir informes y cuadros de mandos que nos lleven a la correcta toma de decisiones.

Para el final he dejado un par de opciones más.

Jerarquías en Modelos tabulares

Jerarquías de visualización

Power BI crea jerarquías de visualización siempre que utilicemos más de una columna en ejes de muchos tipos de gráficos o cabeceras de filas y columnas en matrices. La jerarquía de visualización aporta muchas ventajas y muchas combinaciones diferentes para el análisis y no hay que programarlas, apenas servirse de lo que ya está integrado.

Modjer1

Las flechas que se muestran encima del gráfico son los botones que permiten las distintas opciones de navegación por los distintos niveles de la jerarquía de visualización.

Modjer2

Pero podemos ir más allá.

Jerarquías de modelo

Veamos lo que hace Power BI con una columna de tipo Fecha, si es que no hemos cambiado las opciones de configuración predeterminada. Power BI, crea «4 columnas» y una jerarquía de modelo para garantizar el análisis por niveles. Este es otro ejemplo de la «magia» con Power BI, aunque en realidad lo que ha ocurrido es que ha creado 4 tablas que contienen columnas calculadas con DAX.

Nota al margen sobre las jerarquías de fecha “mágicas“ en Power BI.- Esta funcionalidad no es perfecta, mucho cuidado si tenemos muchas columnas de fecha. Hay que tener en cuenta que para cada una de las columnas se crea una tabla independiente y esas no las vemos ni las podemos controlar. Este comportamiento predeterminado se puede cambiar, es lo mejor.

Una de las mejores vías para conseguir un buen informe es crear jerarquías dentro del modelo tabular. Es una acción de modelado sin programación. Se pueden crear jerarquías sobre columnas que se encuentren en una misma tabla. Desde la opción contextual de los campos en una tabla se puede crear la jerarquía y luego ir añadiendo los niveles.

ModJer4

Tiene muchas ventajas preparar el modelo para realizar un análisis con jerarquías de modelo.

ModJer3

Por una parte, se orienta al usuario sobre la ruta a seguir en el análisis: La vista se ofrece con el dato resumido y es el analista o receptor quien decide descender por los niveles, ya sea tratando los datos de forma discreta, nivel a nivel, o de forma continua, teniendo en cuenta los datos de niveles superiores e inferiores.

Por otra parte, si trabajamos con jerarquías, podemos reducir los campos visibles en la vista de campos y evitar la necesidad de subir y bajar continuamente por la barra de desplazamiento de los campos.

Y por último, como las jerarquías de modelo sólo se pueden utilizar con columnas de una misma tabla, nos permite detectar algún defecto del modelado, como ocurre con los esquemas de Copo de nieve.

Todas son ventajas, el hecho de crear una jerarquía de modelo no obliga a trabajar con todos sus niveles en las visualizaciones, los campos siguen teniendo vida propia, si necesitamos utilizarlos de forma independiente no hay ningún impedimento.

Grupos

Los grupos son estructuras que se pueden crear al vuelo desde algunos gráficos o desde el panel de campos de Power BI Desktop.

Desde el punto de vista de usabilidad, crear un grupo permite segmentar los datos de una columna, en hacerlo al vuelo, de forma muy sencilla, más o menos cómoda, desde un formulario, sin programación.

En este ejemplo, ha bastado con seleccionar dos países para crear un grupo.

Desde el Editor de grupos es posible renombrar el grupo creado como América, por ejemplo y ajustar los otros elementos hasta crear los grupos.

Grupos

Desde el punto de vista de Modelado, crear grupos es muy peligroso, porque tras “la magia”, lo que ocurre verdaderamente es que se crea una columna calculada para cada grupo, y en este caso, desde Power BI Desktop, no tenemos acceso al código DAX que se generó por detrás. Si tienes curiosidad siempre puedes ver el código desde Dax Studio.

Ten en cuenta que en la expresión DAX que se genera no hay una regla de negocio que se ejecute y se valide, apenas se agregan, separados por comas los elementos que forman parte del grupo.

¿Y para qué sirven los grupos? Pues, yo los utilizo para entender y definir la lógica que quiere implementar el cliente, es decir, para crear solamente la Prueba de concepto (POC). Una vez validada la regla con el usuario final, me voy al Power Query y escribo la regla de negocio en una columna condicional y creo de esta forma una columna desde la consulta que gestiona la regla de negocio que tenía el grupo.

Desde la consulta Power Query se garantiza que se validen las reglas a futuro y que se tenga total control sobre el código, con opción de emplear parámetros y todo lo demás que tenemos en la consulta.

En este ejemplo muy simplificado, con el único objetivo de ilustrar la idea, los países que no sean los tres definidos en la condición que existan en la actualidad, o en el futuro, formarán parte del grupo Europa.

CondContinente

Jerarquías vs grupos

Las jerarquías y los grupos son estructuras completamente diferentes en Power BI, se usan con comodidad las dos; pero, mientras las jerarquías son eficientes desde el punto de vista de modelado, los grupos no lo son, son ineficientes y pueden ser peligrosos, cuidadín !!

Visibilidad y agrupación de columnas

En el modelo tabular quue trabajamos con Power BI existen columnas que no deben quedar visibles al informe. Los casos más evidentes son los de las columnas de relación y la de ordenación, así como aquellas que formen parte de jerarquías.

Lo menos evidente es que tampoco deben quedar visibles las columnas numéricas y otras que necesitamos para aplicar la lógica de las medidas y tablas que vamos a escribir con DAX.

Visible1

El resultado para la tabla Productos, en caso de no crear más jerarquías, sería este. Se pueden agregar más jerarquías y ocultas aún más campos.

Visible2

Otra acción que puede ayudar, ya no desde el punto de vista de optimización, sino la usabilidad del modelo, es agrupar las columnas en carpetas según el criterio adecuado para cada modelo en particular. Se seleccionan todas las columnas que se deseen agrupar y se introduce el nombre en la propiedad Carpeta para mostrar.

Carpetas

DAX

Bueno… lo dejamos para la próxima, las expresiones DAX – Data Analysis Expression son piedra angular en el modelado tabular de Power BI.

Espero resulte de utilidad. #HappyModeling 🙂

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.