Introducción
El motor VertiPaq (también conocido como xVelocity en documentación histórica) es el motor de almacenamiento en memoria y por columnas que usan Power BI Desktop, Analysis Services Tabular y Azure Analysis Services cuando un modelo está en modo Import. Entender cómo funciona y qué factores influyen en su compresión es clave para reducir el tamaño de los modelos, bajar costos de capacidad y acelerar las consultas analíticas.
Cómo funciona el motor VertiPaq
VertiPaq almacena los datos por columna, no por filas. Es decir, cada columna se guarda como un bloque independiente y el motor aplica varias técnicas de codificación y compresión para reducir los bits necesarios para representar sus valores. Esto hace que las consultas que leen pocas columnas sean mucho más rápidas porque solo se descomprime y procesa lo necesario.
Una analogía simple: imagina una biblioteca. Si cada estantería guarda solo libros de un mismo tema (columnas), encontrar y leer capítulos concretos suele ser más rápido que revisar montones de libros que mezclan capítulos distintos (filas). Además, si muchos libros comparten palabras o frases comunes, conviene guardar una lista única de esas palabras y referenciarla, en lugar de repetirlas en cada libro.
Técnicas de codificación principales
- Dictionary (hash) encoding: se crea un diccionario con los valores distintos de la columna y cada fila almacena solo el índice que apunta a ese diccionario. Es especialmente eficiente cuando hay poca variedad de valores (baja cardinalidad), por ejemplo columnas de país o categoría.
- Value / delta encoding: reduce el número de bits por valor representando diferencias o ajustando el tamaño mínimo necesario para almacenar cada dato.
- Run‑length encoding (RLE): almacena secuencias de valores repetidos como pares (valor, conteo). Funciona bien cuando una columna tiene largos bloques de repeticiones.
- Bit‑packing: agrupa datos para usar exactamente los bits necesarios, evitando desperdicio por alineaciones fijas.
VertiPaq decide internamente qué combinación de estas técnicas aplicar por columna según el patrón de datos, el orden y el tipo. El resultado suele ser una compresión alta y consultas rápidas sobre columnas concretas.
Qué factores afectan la compresión
La eficiencia de VertiPaq depende principalmente de:
- Cardinalidad: el número de valores distintos en una columna. A menor cardinalidad, mejor compresión con diccionarios.
- Tipo de dato: los números suelen ocupar menos espacio que textos; elegir tipos adecuados ayuda a compactar.
- Orden y repetición: si los datos presentan patrones o bloques repetidos, técnicas como RLE son más efectivas.
- Diseño del modelo: columnas innecesarias, columnas calculadas o claves largas aumentan el tamaño del modelo.
No existe una tasa de compresión fija: estimaciones como «10×» son solo indicativas y dependen totalmente del conjunto de datos y del modelado.
Medidas, columnas calculadas y DirectQuery
Las medidas (measures) no ocupan espacio en VertiPaq como lo hacen tablas o columnas: son fórmulas que se evalúan en tiempo de consulta. En cambio, las columnas calculadas y las columnas físicas sí consumen memoria, por lo que conviene priorizar medidas cuando la lógica lo permita.
Las tablas en DirectQuery no se cargan ni comprimen en el VertiPaq local: solo los objetos en modo Import son procesados por VertiPaq. Esto influye en decisiones de diseño cuando se combinan grandes fuentes en tiempo real con datos cargados en memoria.
Cómo medir y priorizar optimizaciones
Medir es imprescindible: conocer qué tablas y columnas consumen más memoria permite priorizar acciones efectivas. Herramientas como VertiPaq Analyzer y DAX Studio permiten exportar métricas del modelo (archivos .vpax) y examinar el tamaño del diccionario, la contribución en memoria por columna y otras métricas útiles.
Microsoft Learn también ofrece una guía oficial con técnicas para reducir datos en modelos Import y explica por qué prácticas como elegir columnas, ajustar tipos y reducir cardinalidad ayudan a controlar tamaño y rendimiento: Data reduction techniques for Import modeling (Power BI).
SQLBI publica análisis técnicos que ayudan a interpretar correctamente el tamaño del diccionario y a identificar columnas con mala compresión, lo que facilita decidir si conviene cambiar tipos, reducir cardinalidad o eliminar columnas.
Checklist práctica: optimizaciones que realmente importan
Según la documentación oficial y las guías de expertos, las acciones con mayor impacto en la eficiencia del motor VertiPaq son:
- Usar un modelo en estrella (fact-dim) para reducir duplicación y facilitar compresión.
- Reducir cardinalidad: usar claves sustitutas (surrogate keys) en lugar de largas cadenas de texto.
- Eliminar columnas innecesarias y evitar columnas con texto cuando sea posible; preferir tipos numéricos.
- Priorizar medidas sobre columnas calculadas cuando la lógica lo permita.
- Pre‑agregar o resumir datos que no necesitan granularidad completa.
- Habilitar incremental refresh para evitar reprocesar todo el modelo en cada actualización.
- Considerar composite models o agregaciones si necesitas combinar modos Import y DirectQuery o manejar volúmenes muy grandes.
Qué observar primero en tu modelo
- Exporta métricas con DAX Studio y analiza el .vpax con VertiPaq Analyzer.
- Identifica las columnas con mayor diccionario o mayor tamaño por fila.
- Evalúa si esas columnas pueden cambiar de tipo, reducir cardinalidad o eliminarse.
- Repite la medición después de aplicar cambios para cuantificar el impacto real en MB y en tiempos de actualización.
Medir antes y después es la única forma fiable de saber si una optimización fue efectiva, porque el efecto depende del patrón de datos.
Dominar el motor VertiPaq no es solo una ventaja técnica: para equipos en Latinoamérica y otras regiones puede traducirse en menores costos de capacidad y mejor experiencia para los usuarios finales. Empieza por medir, aplica las buenas prácticas y prioriza las columnas que más consumen.
Si trabajas regularmente con Power BI, integrar VertiPaq Analyzer y DAX Studio en tu flujo de trabajo te dará visibilidad real y permitirá decisiones de optimización basadas en datos.