Agrégations et modèles composites
En bref
- Objectifs : choisir le mode de stockage de chaque table ; construire un modèle composite (Import, DirectQuery et Double) ; configurer une agrégation définie par l'utilisateur ; situer les agrégations automatiques.
- Prérequis : modes de connexion (partie 1), pages Schéma en étoile et Relations.
- Niveau : avancé.
- Licence requise : aucune pour les modèles composites et les agrégations définies par l'utilisateur ; capacité Premium ou Fabric, Premium par utilisateur ou Power BI Embedded pour les agrégations automatiques.
Pourquoi ?
Le mode Import offre les meilleures performances, mais certaines tables de faits sont trop volumineuses ou doivent rester proches du temps réel. Un modèle composite combine plusieurs modes de stockage dans un même modèle : les dimensions et les données agrégées en mémoire, le détail interrogé à la source. Les agrégations permettent de répondre à la plupart des visuels depuis la mémoire, et de n'interroger la source que pour le détail.
Notions clés
Les modes de stockage d'une table
| Mode | Comportement | Usage type |
| Importer | Les données sont copiées en mémoire et rafraîchies à l'actualisation | Le cas général |
| DirectQuery | Chaque visuel envoie une requête à la source, rien n'est stocké | Très gros volumes, données en quasi temps réel |
| Double | La table se comporte en Import ou en DirectQuery selon la requête | Tables de dimension d'un modèle composite |
| Direct Lake | Lecture directe des tables Delta de OneLake (Fabric) | Modèles construits sur un lakehouse ou un entrepôt Fabric |
Un modèle qui mélange ces modes est un modèle composite. Un rapport peut aussi se connecter en DirectQuery à un modèle sémantique publié et lui ajouter ses propres tables ou mesures.
Pourquoi le mode Double ?
Une relation entre une table Import et une table DirectQuery devient une relation limitée, moins performante. En passant les dimensions en mode Double, elles servent à la fois les tables importées (depuis la mémoire) et les tables DirectQuery (dans la requête envoyée à la source). Exemple : Ventes en DirectQuery, Date, Client et Géographie en Double. Les segments sont rapides, et Ventes n'occupe pas de mémoire.
Agrégations définies par l'utilisateur
Une table d'agrégation contient les faits pré-totalisés à un grain plus élevé (par exemple ventes par date, client et sous-catégorie). Elle est en mode Import et masquée. La table de détail reste en DirectQuery. Quand un visuel demande un total que l'agrégation peut fournir, Power BI répond depuis la mémoire ; sinon, il interroge la table de détail. Les utilisateurs ne voient que la table de détail.
Agrégations automatiques
Dans le service, sur une capacité Premium ou Fabric, Premium par utilisateur ou Power BI Embedded, les agrégations automatiques analysent les requêtes des sept derniers jours et créent elles-mêmes des agrégations en mémoire pour un modèle DirectQuery. Elles s'activent dans les paramètres du modèle sémantique et peuvent coexister avec des agrégations définies par l'utilisateur. Source
Pas à pas
Changer le mode de stockage d'une table
1. Dans la vue Modèle, sélectionnez la table.
2. Dans le volet Propriétés, développez Avancé, puis choisissez le Mode de stockage.
[Capture : volet Propriétés d'une table, section Avancé développée, liste Mode de stockage ouverte sur Importer, DirectQuery et Double]
Attention : une table passée de DirectQuery à Importer ne peut pas revenir en DirectQuery depuis Power BI Desktop.
Configurer une agrégation définie par l'utilisateur
1. Créez la table d'agrégation (vue SQL, requête Power Query avec Regrouper par), au grain voulu, avec les clés des dimensions et les colonnes totalisées.
2. Passez-la en mode Importer. Les dimensions qui la relient à la table de détail passent en Double.
3. Dans le volet Données, clic droit sur la table d'agrégation > Gérer les agrégations.
4. Pour chaque colonne, choisissez le Résumé (Somme, Nombre, GroupBy, Nombre de lignes de table...), la Table de détails et la Colonne de détails correspondantes.
[Capture : boîte de dialogue Gérer les agrégations, colonnes de la table d'agrégation associées à la table de détail Ventes avec les fonctions Somme et GroupBy]
5. Cliquez sur Appliquer tout : la table d'agrégation est masquée.
Exemple
Une table Ventes de plusieurs centaines de millions de lignes reste en DirectQuery sur l'entrepôt. Une table Ventes agrégées (date, client, sous-catégorie, somme des montants, nombre de lignes) est importée et masquée. Date, Client et Produit sont en mode Double. Les visuels par mois ou par sous-catégorie répondent depuis la mémoire ; l'extraction vers le détail d'une commande interroge la source.
Le support de formation Architecture Power BI approfondit ce sujet : Agrégations manuelles et automatiques.
Pièges et bonnes pratiques
- Ne passez pas en DirectQuery par défaut : commencez en Import et ne changez de mode que pour les tables qui le justifient.
- Une table en Double peut renvoyer des valeurs en cache plus anciennes que la source : synchronisez les actualisations.
- Une RLS définie uniquement sur la table d'agrégation est interdite ; définissez-la sur les dimensions.
- Les agrégations ne sont pas utilisées si la source utilise l'authentification unique (SSO).
- Vérifiez l'usage des agrégations avec l'événement Aggregate Table Rewrite Query de SQL Profiler, et mesurez avec l'analyseur de performances (page Optimiser le modèle).
À retenir
- Chaque table a son mode de stockage : Importer, DirectQuery, Double ou Direct Lake.
- Les dimensions d'un modèle composite passent en Double pour éviter les relations limitées.
- Une agrégation définie par l'utilisateur est une table importée et masquée qui répond à la place de la table de détail DirectQuery.
- Les agrégations automatiques sont réservées aux capacités et à Premium par utilisateur.