[Miro]
Bonnes pratiques pour la réduction d'un modèle de données Power BI
La réduction de la taille d'un modèle de données est une étape fondamentale du développement sur Power BI. Un modèle optimisé garantit de meilleures performances, une consommation de ressources maîtrisée et une maintenabilité accrue.
L'objectif principal est d'améliorer :
la performance : les calculs DAX, le rendu des visuels et les temps de rafraîchissement sont accélérés. la consommation de ressources : un modèle plus petit utilise moins de mémoire vive (RAM), ce qui est crucial pour respecter les limites de capacité du service Power BI (Pro, Premium). l'expérience utilisateur : les interactions avec les rapports sont plus fluides et réactives. la maintenabilité : un modèle épuré est plus simple à comprendre, à déboguer et à faire évoluer. Les techniques d'optimisation s'articulent autour de quatre axes principaux.
1. La réduction des colonnes
Cette technique est celle qui a généralement le plus grand impact. Le moteur de stockage de Power BI (VertiPaq) est un moteur de base de données en colonnes, où chaque colonne ajoutée a un coût en mémoire, particulièrement celles présentant une forte cardinalité (un grand nombre de valeurs uniques).
Pratiques recommandées :
Suppression des colonnes superflues : la règle consiste à n'importer que les colonnes strictement nécessaires aux rapports, aux calculs et aux relations. Mise en œuvre : Dans l'éditeur Power Query, il convient de sélectionner et supprimer toutes les colonnes qui ne seront pas utilisées. Les colonnes servant de clés de relation doivent évidemment être conservées. Exemples : clés primaires techniques sans usage analytique, colonnes de description longues jamais affichées, champs d'audit, etc. Gestion des colonnes à haute cardinalité : ces colonnes sont particulièrement pénalisantes pour la performance et la compression. Exemples : identifiants de transaction uniques, GUIDs, colonnes de date/heure à la milliseconde près. Solution : Si leur suppression n'est pas possible, il faut envisager de les scinder (par exemple, séparer une colonne DateTime en une colonne Date et une colonne Heure). 2. La réduction des lignes
Bien que l'impact soit souvent moindre que celui de la réduction de colonnes, diminuer le nombre de lignes contribue directement à alléger le modèle.
Pratiques recommandées :
Filtrage des données en amont : ne charger que le sous-ensemble de données pertinent pour l'analyse. Mise en œuvre : Appliquer des filtres dans l'éditeur Power Query. filtrage temporel : charger uniquement les 2 ou 3 dernières années de données au lieu de l'historique complet. filtrage par statut : exclure les enregistrements non pertinents (commandes annulées, produits inactifs). filtrage par périmètre : restreindre les données à une région, une filiale ou une unité commerciale spécifique. 3. Le regroupement et la synthèse
Cette technique consiste à pré-agréger les données avant leur chargement dans le modèle. Elle est extrêmement efficace lorsque l'analyse ne requiert pas le niveau de granularité le plus fin.
Pratiques recommandées :
Agrégation des données factuelles : si l'analyse porte sur des totaux par jour, produit ou magasin, il est inutile de charger chaque transaction individuelle. Mise en œuvre : Utiliser la fonctionnalité "Regrouper par" (Group By) dans l'éditeur Power Query pour agréger les faits (ventes, quantités) selon les axes d'analyse souhaités (date, produit, magasin). Contrainte : Cette approche entraîne une perte du détail transactionnel. Il s'agit d'un arbitrage à réaliser en fonction des besoins métier. 4. L'optimisation des types de données
Le choix d'un type de données adéquat pour chaque colonne influence directement l'espace de stockage nécessaire.
Pratiques recommandées :
Utilisation du type de données le plus efficient : Privilégier le type Nombre entier au lieu de Texte pour les identifiants numériques. Utiliser le type Nombre décimal fixe pour les données monétaires, plus précis et performant que le type Nombre décimal (virgule flottante). Convertir systématiquement les colonnes de dates stockées en texte ou en nombre (ex: 20231225) en type de données Date. Scission des colonnes date/heure : une colonne de type Date/Heure génère une cardinalité très élevée. Il est recommandé de la diviser en deux colonnes distinctes dans Power Query : une colonne de type Date (pour les relations et les analyses temporelles) et une colonne de type Heure (si nécessaire). Synthèse des pratiques recommandées
Voici une checklist résumant les actions clés pour l'optimisation d'un modèle de données :
✅ suppression systématique des colonnes non utilisées dans les visuels, filtres, relations ou mesures DAX. ✅ filtrage des lignes en amont (dans Power Query) pour ne charger que la période et le périmètre d'analyse requis. ✅ agrégation des données factuelles avec "Regrouper par" si le niveau de détail le plus fin n'est pas nécessaire. ✅ sélection du type de données le plus petit et le plus approprié pour chaque colonne. ✅ scission des colonnes Date/Heure en une colonne Date et une colonne Heure distinctes. ✅ désactivation de l'option "Date/Heure automatique" dans les paramètres de Power BI Desktop et utilisation d'une table de dates dédiée et optimisée.