VertiPaq : Le moteur de base de données en mémoire de Power BI
VertiPaq est le moteur d'entreposage en mémoire constituant le coeur de Power BI, de Power Pivot et du moteur tabulaire d'Analysis Services. Sa vocation principale est de permettre l'exécution rapide de calculs analytiques à partir de grandes quantités de données. Contrairement aux moteurs relationnels traditionnels fondés sur une organisation en lignes, VertiPaq adopte une structure columnstore (entreposage par colonnes). Cette approche permet de compresser les données de manière très efficace et de ne charger en mémoire que les colonnes nécessaires aux requêtes, diminuant ainsi le volume de données traité et améliorant la performance globale.
Architecture en colonnes et compression
Dans VertiPaq, chaque colonne est entreposée indépendamment des autres. En séparant les données par attribut, le moteur est capable d'appliquer des algorithmes de compression adaptés à la nature de chaque colonne. Les valeurs répétées (comme les catégories, les noms ou les codes) sont remplacées par des identifiants numériques dans un dictionnaire interne. Ainsi, au lieu d'avoir «Canada» répété des milliers de fois, VertiPaq ne conserve qu'une entrée dans un dictionnaire et entrepose une référence vers celle-ci. Ce mécanisme réduit drastiquement la taille en mémoire et des ensembles de données lourds deviennent viables dans Power BI.
Encodage, dictionnaires et optimisation
Le processus d'encodage joue un rôle fondamental dans les performances du moteur VertiPaq. En fonction de la cardinalité des données (nombre de valeurs distinctes), le moteur choisit différentes techniques :
- Encodage par dictionnaire : idéal pour des colonnes textuelles ou catégorielles contenant peu de valeurs distinctes.
- Encodage par valeurs : utilisé pour des colonnes numériques à cardinalité élevée.
- Run-length encoding (RLE) : utilisé lorsque des valeurs identiques se répètent de manière consécutive.
Ces mécanismes permettent non seulement de réduire l'espace mémoire utilisé, mais aussi de faciliter l'exécution des opérations analytiques puisque les calculs sont appliqués sur des vecteurs compacts, optimisés pour le microprocesseur et la mémoire cache.
Chargement des données en mémoire
Lorsqu'un modèle Power BI est chargé, les données sont importées et transformées en blocs optimisés (segments). Chaque segment correspond à une partition logique d'une colonne. VertiPaq décompresse à la volée seulement les segments nécessaires au calcul, minimisant les opérations coûteuses. Ce fonctionnement «in-memory» élimine les lectures lourdes sur disque, ce qui permet de répondre à des requêtes analytiques en quelques millisecondes, même sur des millions de lignes.
Moteur hautement parallélisé
VertiPaq exploite les architectures modernes multi-coeurs et utilise le parallélisme pour accélérer le traitement. Lors de l'exécution de requêtes DAX, le moteur distribue le travail sur plusieurs processus légers afin de calculer simultanément plusieurs segments de colonnes. Cette capacité de parallélisation fait que des opérations complexes, comme des agrégations multi-niveaux ou des jointures, restent rapides et efficaces.
Importance du modèle de données
La performance de VertiPaq dépend fortement de la structure du modèle Power BI. Les modèles en étoile (fact table + dimensions) sont particulièrement adaptés. Les tables de faits longues avec des colonnes numériques compressibles et des dimensions bien hiérarchisées permettent d'obtenir :
- Compression optimale,
- Jointures limitées,
- Requêtes rapides,
- Agrégations efficaces.
À l'inverse, les tables très larges contenant énormément de chaînes de texte ou de nombreuses clefs composites nuisent à la compression et augmentent le coût analytique.
Relation entre VertiPaq et DAX
DAX exploite le modèle in-memory et la structure colonnes de VertiPaq. Lorsqu'une expression DAX est évaluée, le moteur calcule en vecteurs, ce qui signifie qu'il traite des groupes de valeurs simultanément au lieu de ligne par ligne. Cela permet d'exécuter des calculs complexes d'agrégation, de filtrage ou de contextes temporels sans parcourir lentement chaque ligne. Comprendre VertiPaq aide donc à écrire des formules DAX performantes.
Limites et bonnes pratiques
Bien que puissant, VertiPaq présente quelques contraintes :
- Les modèles trop volumineux consomment énormément de RAM.
- Les colonnes de texte à haute cardinalité réduisent la compression.
- Les relations nombreuses et mal définies compliquent la navigation des requêtes.
- Les colonnes inutiles doivent être supprimées pour améliorer la mémoire et les performances.
Pour tirer le meilleur parti de VertiPaq, il est recommandé :
- De créer un modèle en étoile propre,
- De réduire les colonnes inutiles,
- D'optimiser la cardinalité,
- De préférer des colonnes numériques,
- D'encoder les paramètres en catégories.
Conclusion
VertiPaq constitue l'un des éléments clefs expliquant la rapidité de Power BI. Grâce à son architecture en colonnes, son système de compression avancé et son fonctionnement en mémoire, il transforme des bases de données volumineuses en modèles analytiques performants. Pour les professionnels de l'analyse, comprendre comment VertiPaq entrepose et traite les données permet d'optimiser les modèles, d'écrire un DAX plus efficace et d'exploiter pleinement la puissance du moteur tabulaire de Microsoft.