[PowerBi] Vertipaq Analyzer para optimizar modelos

Estamos viviendo una época donde hay reportes de power bi por todas partes. Su popularidad creció tanto que las instituciones rebalsan de informes.

Trabajar sobre un tablero nuevo con nuevo requerimiento puede ser muy ordenado cuando ya conocemos las mejores prácticas, pero todo aquello que no se construyó de manera ordenada hoy esta dando vueltas. Para estos modelos creados con menos delicadeza es que hoy escribimos este artículo.

En esta lectura podrán encontrar una herramienta antigua y popular llamada vertipaq analyzer. Conocida para entender del motor tabular de un modelo.

Para comenzar vamos a hacer como nos gusta aquí en LaDataWeb leyendo la definición pero en este caso no es de Microsoft sino nuestra.

Vertipaq Storage es el motor de almacenamiento de modelos tabulares de las plataformas de datos Microsoft que utiliza Power Bi y Analysis Services. Funciona en memoria con un almacenamiento columnar que le da gran performance.

Conociendo que hay ahí escondido en un modelo semántico de Power Bi podemos ver el concepto de la herramienta en cuestión:
Vertipaq Analyzer es una herramienta útil para analizar la estructura de almacenamiento de Vertipaq de modelos tabulares de datos en Power Bi o Analysis Services.

Analizar tamaños y características de tablas y columnas es un paso importante para optimizar un modelo de datos. Junto con herramientas como el analizador de buenas prácticas de Tabular Editor y el analizador de columnas o medidas usadas de Measure Killer, Vertipaq Analyzer es la tercera pata de un trío que ayuda a optimizar modelos o encontrar donde está perdiendo mucho poder para performar bien.

Hoy por hoy la herramienta esta integrada en dos external tools, DAX Studio y Tabular Editor 3. Si disponemos una de ellas, podemos comenzar.

Métricas del analizador

Lo primero que haremos será abrir desde el menú de external tools a DAX Studio o Tabular Editor 3. En mi caso voy a mostrarlo en DAX Studio que es gratis. En Tabular Editor 3 esta visible en una pestaña cerca de los mensajes de output.

Luego de abrir DAX Studio en la pestaña avanzada veremos el botón "View Metrics" que desprende una ventana para iniciar el Vertipaq Analyzer

Vertipaq Analyzer no es más que una Matriz de información que podemos abrir y cerrar para conocer más detalles de nuestro modelo. Nos permite navegar analizando tablas, columnas, relaciones, particiones y ver el verdadero valor de tamaño del modelo semántico. Comencemos por el resumen que nos muestra el tamaño del modelo.

Este es el tamaño total que podría levantar en una capacidad dedicada una vez implementado.

Las particiones nos van a permitir ver con más detalles interesantes como el modo de conexión que usamos, las filas, el tamaño comprimido de datos del segmento.

En detalles más finos inclusive veríamos la temperatura que nos puede ayudar a entender en capacidades dedicadas respecto a que esta más reciente en memoria. Claro está que aquí veríamos las particiones que creamos si estuviéramos usando incremental refresh.

Las relaciones pueden darnos un vistazo que no siempre tenemos presente. Las relaciones también tienen un peso que puede hacer la diferencia.

Cada una tiene un peso y las más livianas que podemos crear son entre columnas de tipo entero. Esto puede ayudarnos a repensar el modo en que armamos nuestros claves o IDs para relacionar el modelo.

Para tablas y columnas tenemos mucha información. Tal vez las más influyentes correspondan a comprender el peso de su cardinalidad, total sizing y el % que representa una columna en la tabla o una tabla en la base de datos, puesto que podría ayudarnos a entender mejor donde se va el procesamiento o peso del modelo.

Columnas:

Tablas:

Veamos el concepto de las columnas para comprender mejor:

  • Cardinality: Cardinalidad del objeto (número de filas de una tabla o número de valores únicos de una columna)
  • Rows: Número de filas de una tabla, partición o segmento
  • Data Size: Bytes correspondientes a todos los datos comprimidos en segmentos y particiones. No incluye el diccionario ni las jerarquías de columnas.
  • Columns Hierarchies Size: Bytes de jerarquías generadas automáticamente para las columnas (utilizadas por MDX).
  • User Hierarchies Size: Bytes de jerarquías definidas por el usuario
  • Relationship Size: Bytes de las relaciones entre tablas
  • Columns Total Size: Bytes de todas las estructuras relacionadas con una columna (suma de Tamaño de Datos, Tamaño del Diccionario y Tamaño de Jerarquías de Columnas)
  • Dictionary Size: Bytes de las estructuras de diccionario
  • Table Size: Bytes de una tabla (suma del Tamaño Total de Columnas, Tamaño de Jerarquías de Usuario y Tamaño de Relaciones)
  • Table Size %: Relación entre el Tamaño Total de Columnas y el Tamaño de la Tabla
  • Database Size %: Relación entre el Tamaño de la Tabla y el Tamaño total de la base de datos (suma del Tamaño de Tabla de todas las tablas)
  • Segments #: Número de segmentos
  • Partitions #: Número de particiones
  • Columns #: Número de columnas
  • Encoding: Tipo de codificación de las columnas (HASH/VALOR); muestra "Many" cuando se trata de un grupo de columnas con codificaciones diferentes
  • RI Violations: Número de relaciones con violaciones de integridad referencial, asignadas a la tabla en el lado uno de la relación de tipo Muchos a Uno (M:1); dicha tabla tiene una fila adicional en blanco
  • Bid. Filters: Número de relaciones con propagación de filtro bidireccional
  • MMR: Número de relaciones de cardinalidad muchos a muchos

Con estos valores podríamos tener buenos detalles que nos ayuden para entender si las columnas tienen sus tipos de datos apropiados. Malas asignaciones de tipo de datos pueden dar malos resultados en cardinalidad, tamaños o relaciones. Podemos ver los tamaños reales no comprimidos en total size que podría ayudarnos a definir si realmente una columna es necesaria o no.

Espero que esto los ayude a analizar sus modelos para hallar y entender como es su almacenamiento. Entrar en análisis más fino para entender el peso de cada detalle. Si quieren aprender aún más detalles de esta herramienta recomiendo los videos de los creadores:

ttps://www.youtube.com/watch?v=p8M7TDiXfxU&list=PLU6II7MW-aiI5A2FjtlVx0yVm3AezOjYr