Partager via


Mode de stockage de table dans les modèles sémantiques Power BI

Dans les modèles sémantiques Power BI, le mode de stockage d’une table dépend de sa source de données. Vous pouvez utiliser le mode de stockage pour contrôler si Power BI stocke les données de table en mémoire pour les rapports ou récupère les données de la source de données lors du chargement des visuels.

Cet article vous présente les différents modes de stockage de tables et décrit comment ils affectent le comportement du rapport.

Modes de stockage de tables

Mode Stockage Table Lorsqu’il est disponible Avantages Note
Importer Dans Power BI Desktop et la modélisation web Power BI, pour presque toutes les sources de données, lorsque vous sélectionnez Obtenir des données et utilisez Power Query. Un instantané des données est stocké dans un stockage natif pour le chargement rapide des visuels dans les rapports. Pour obtenir les données les plus récentes de la source de données, actualisez le modèle sémantique ou la table.
Direct Lake sur OneLake Dans Power BI Desktop et la modélisation web de Power BI, pour les sources de données Microsoft Fabric, lorsque vous sélectionnez le catalogue OneLake. Les données sont analysées à partir de tables delta Microsoft OneLake pour le chargement rapide des visuels dans les rapports. Par défaut, les données les plus récentes sont chargées. Pour accéder aux données les plus récentes en l’actualisant manuellement, désactivez la synchronisation automatique dans la page des paramètres d’actualisation planifiée. Une actualisation est également appelée reframing pour Direct Lake. Pour plus d’informations sur Direct Lake, consultez la vue d’ensemble de Direct Lake.
Direct Lake sur SQL Dans les points de terminaison analytiques SQL des éléments Fabric, lorsque vous sélectionnez Nouveau modèle sémantique. Les données sont scannées à partir des tables OneLake delta pour un chargement rapide dans les rapports. Dans ce mode, Power BI utilise le mode de stockage DirectQuery pour accéder aux données dans les cas suivants :
- Une vue est utilisée.
- L’accès granulaire SQL est activé.
- Un seuil de sécurité Direct Lake est atteint.
DirectQuery Dans Power BI Desktop, pour certaines sources de données telles que des bases de données SQL, lorsque vous sélectionnez Obtenir des données et utilisez Power Query. Les données sont interrogées à partir de la source de données lorsque les visuels chargent et ne sont pas stockés dans le modèle sémantique. La requête est une traduction de la requête DAX (Data Analysis Expressions) Power BI, que les visuels utilisent, dans le langage de requête natif de la source de données, comme une requête SQL.
DirectQuery sur les modèles sémantiques Power BI Dans Power BI Desktop, lorsque vous vous connectez à un modèle sémantique Power BI, puis sélectionnez Apporter des modifications à ce modèle, ou lorsqu’une table Import ou DirectQuery est déjà ajoutée. Les requêtes DAX du nouveau modèle s’exécutent sur le modèle source et peuvent utiliser des mesures à partir des deux. Certaines propriétés de colonne sur le modèle distant peuvent être remplacées dans le nouveau modèle. Cette personnalisation inclut les chaînes de format et les noms d’affichage. Utilisez ce mode de stockage lorsque vous devez apporter une petite modification à un modèle sémantique existant pour un rapport spécifique.
Double Dans Power BI Desktop, lorsque vous convertissez une table DirectQuery en mode Importation. Une boîte de dialogue s’affiche avec des options pour convertir les tables DirectQuery restantes en mode Double. Les relations entre DirectQuery et les tables Import sont limitées. Le passage de DirectQuery en mode Double peut aider à maintenir ces relations régulières.
Hybride Dans les scénarios d’actualisation incrémentielle sur une table d'importation. La dernière partition de la table peut être en mode DirectQuery pour vous assurer que les données les plus récentes sont disponibles entre les actualisations d’importation. La création et la gestion des partitions sont automatisées pour réduire la quantité de données qui doivent être actualisées. Pour plus d’informations, consultez Configurer l’actualisation incrémentielle et les données en temps réel pour les modèles sémantiques Power BI.

Note

Le mode Live Connect est utilisé dans les cas suivants :

  • Pour vous connecter à un modèle sémantique Power BI dans Power BI Desktop pour créer un rapport
  • Pour créer un rapport à partir d’un modèle sémantique Power BI dans le web

Un rapport Live Connect n’a pas de modèle sémantique local et est parfois appelé rapport léger. Le modèle sémantique Power BI distant peut utiliser n’importe quel mode de stockage de table. En tant qu’auteur de rapport, vous pouvez voir le modèle en mode Modèle , mais seules des informations limitées sont disponibles. Les mesures que vous créez sont stockées dans le rapport.

Un modèle sémantique composite est un modèle sémantique avec des tables en plusieurs modes de stockage. Pour plus d’informations, consultez Utiliser des modèles composites dans Power BI.

Afficher le mode de stockage d’une table

Chaque table a une Storage mode propriété. Pour afficher le mode de stockage d’une table, procédez comme suit :

  1. En mode Modèle , sélectionnez la table.

  2. Dans le volet Propriétés , développez la section Avancé , puis développez la liste des modes de stockage .

    Capture d’écran de la vue Modèle dans Power BI Desktop. Une table est mise en surbrillance. Sous Propriétés, la liste des modes de stockage est développée et mise en surbrillance.

Pour la plupart des tables, vous pouvez définir le mode de stockage uniquement lorsque vous ajoutez la table. Vous pouvez modifier le mode de stockage uniquement si la table est en mode DirectQuery ou Direct Lake en mode OneLake lors de la création :

  • Vous pouvez remplacer une table DirectQuery par une table Import ou Dual. Après avoir défini cette propriété, vous ne pouvez pas définir le mode sur DirectQuery. Les exceptions sont la modélisation web Power BI et la modification dynamique dans Power BI Desktop. Ces environnements ont tous deux un contrôle de version, que vous pouvez utiliser pour inverser un mode de stockage modifié.
  • Vous pouvez convertir Direct Lake sur des tables OneLake pour importer des tables à l’aide de laboratoires de liaison sémantique dans les notebooks Fabric.

Contraintes sur les tables DirectQuery et Dual

Les tables doubles ont les mêmes contraintes fonctionnelles que les tables DirectQuery. Ces contraintes incluent des transformations M limitées et des fonctions DAX restreintes dans des colonnes calculées. Pour plus d’informations, consultez Limitations de DirectQuery.

Propagation du paramètre Double

Considérez le modèle suivant. Toutes les tables proviennent d’une seule source qui prend en charge les modes Import et DirectQuery.

Capture d’écran d’une vue modèle Power BI Desktop qui montre les relations entre cinq tables : Date, Sales, SurveyResponse, Customer et Geography.

Supposons que toutes les tables de ce modèle soient initialement définies sur DirectQuery. Si vous modifiez le mode de stockage de la table SurveyResponse en importation, la fenêtre d’avertissement suivante s’affiche :

Capture d’écran d’une fenêtre qui décrit l’effet de la modification du mode de stockage en mode Importer, avec une option permettant de définir des tables de dimension en mode Double.

Vous pouvez définir les tables de dimension, Customer, Geography et Date en mode Double pour réduire le nombre de relations limitées dans le modèle sémantique et améliorer les performances. Les relations limitées impliquent normalement au moins une table DirectQuery où JOIN la logique ne peut pas être envoyée (push) aux systèmes sources. Étant donné que les tables doubles peuvent agir comme des tables DirectQuery ou Import, cette situation est évitée.

La logique de propagation est conçue pour aider les modèles qui contiennent de nombreuses tables. Supposons que vous disposez d’un modèle avec 50 tables et que seules certaines tables de faits (transactionnelles) doivent être mises en cache. La logique de Power BI Desktop calcule l'ensemble minimal de tables de dimension qui doivent être définies en mode Dual, afin que vous n'ayez pas à le faire.

La logique de propagation ne traverse que le côté un des relations un-à-plusieurs.

Exemple d’utilisation du mode de stockage

Prenons un exemple qui implique les tables et les modes de stockage suivants :

Table Mode de stockage
Ventes DirectQuery
SurveyResponse Importer
Date Double
Client Double
Géographie Double

L’utilisation de ces modes de stockage entraîne le comportement suivant, en supposant que la table Sales a un volume de données important :

  • Power BI Desktop met en cache les tables de dimension, Date, Customer et Geography pour réduire les temps de chargement des rapports initiaux lorsqu’ils récupèrent des valeurs de segment à afficher.

  • Power BI Desktop ne met pas en cache la table Sales.

    • Ne pas mettre en cache cette table aide à améliorer les temps d’actualisation des données et à réduire la consommation de mémoire.
    • Les requêtes de rapport basées sur la table Sales s’exécutent en mode DirectQuery. Ces requêtes peuvent prendre plus de temps que les requêtes d’importation. Toutefois, les résultats des requêtes DirectQuery sont plus proches des résultats en temps réel, car aucune latence de mise en cache n’est introduite.
  • Les requêtes de rapport basées sur la table SurveyResponse sont relativement rapides, car elles sont retournées à partir du cache en mémoire.

Requêtes qui réussissent ou échouent dans le cache

Vous pouvez utiliser SQL Server Profiler pour voir quelles requêtes atteignent ou manquent le cache en mémoire. Si vous connectez cet outil au port de diagnostic pour Power BI Desktop, vous pouvez effectuer une trace basée sur les événements suivants :

  • Événements de requêtes\Début de la requête
  • Traitement des requêtes\Début de la requête VERTipaq SE
  • Traitement des requêtes\Démarrage DirectQuery

Pour chaque événement Query Begin , vérifiez les autres événements avec la même ActivityID valeur. Par exemple, s’il n’existe pas d’événement DirectQuery Begin, mais qu’il existe un événement Vertipaq SE Query Begin, la requête est répondue à partir du cache.

Les requêtes qui font référence à deux tables retournent des données à partir du cache, si possible. Sinon, ils reviennent au mode DirectQuery.

Considérez quelques requêtes DAX qui font référence aux tables de la section précédente. Par exemple, la requête suivante fait référence uniquement à une colonne de la table Date , qui est en mode Double. Par conséquent, la requête doit atteindre le cache :

Capture d’écran montrant le texte d’une requête qui fait référence à la table Date.

La requête suivante fait référence uniquement à une colonne de la table Sales , qui est en mode DirectQuery. Par conséquent, cela ne devrait pas affecter le cache :

Capture d’écran montrant le texte d’une requête qui fait référence à la table Sales.

La requête suivante est intéressante, car elle combine les deux colonnes. Cette requête n’atteint pas le cache. Vous pouvez initialement vous attendre à ce qu’elle récupère les valeurs CalendarYear du cache et salesAmount à partir de la source, puis combinez les résultats. Mais cette approche est moins efficace que la soumission d’une SUM ou GROUP BY opération au système source. Si la source effectue l’opération, seule la somme des ventes pour chaque année est retournée. Ce résultat contient probablement beaucoup moins de lignes que si toutes les valeurs SalesAmount sont retournées.

Capture d’écran montrant le texte d’une requête qui fait référence à la table Date et à la table Sales.

Note

Ce comportement est différent des relations plusieurs-à-plusieurs dans Power BI Desktop lorsque les tables mises en cache sont combinées à des tables qui ne sont pas mises en cache.

Conserver les caches synchronisés

Les requêtes de la section précédente montrent que les tables doubles atteignent parfois le cache et parfois ne le font pas. Par conséquent, les valeurs retournées à partir d’un cache obsolète peuvent différer des valeurs retournées par la source. L’exécution de requête ne tente pas de masquer les problèmes de données, par exemple en filtrant les résultats DirectQuery pour qu’ils correspondent aux valeurs mises en cache. Il vous incombe de connaître vos flux de données et de concevoir en conséquence. Il existe des techniques établies pour gérer ces cas à la source, si nécessaire.

Le mode de stockage double est une optimisation des performances. Vous devez l’utiliser uniquement de manière à ne pas compromettre la possibilité de répondre aux besoins de l’entreprise. Pour un autre comportement, envisagez d’utiliser les techniques décrites dans Comprendre les relations plusieurs-à-plusieurs dans Power BI Desktop.

Vue Table

Si au moins une table du modèle sémantique a un mode de stockage soit Import soit Dual, l’onglet Table de Power BI est disponible.

Capture d’écran de la vue Table dans Power BI Desktop. L’icône d’affichage table est mise en surbrillance et plusieurs lignes de données sont visibles dans une table.

Lorsque vous sélectionnez une table Duplique ou Import en mode Table, ses données mises en cache sont affichées. Aucune donnée n’est affichée pour les tables DirectQuery. Au lieu de cela, un message s’affiche indiquant que les tables DirectQuery ne peuvent pas être affichées.

Considérations et limitations

Il existe actuellement quelques limitations pour les modes de stockage de tables et l’utilisation de certains modes dans les modèles composites :

Les sources de connexion dynamique (multidimensionnelle) suivantes ne peuvent pas être utilisées avec des modèles composites :

  • SAP HANA
  • SAP Business Warehouse

Lorsque vous vous connectez à ces sources multidimensionnelles à l’aide du mode DirectQuery, vous ne pouvez pas vous connecter à une autre source DirectQuery ou la combiner avec des données importées.

Les limitations de l’utilisation du mode DirectQuery s’appliquent toujours lorsque vous utilisez des modèles composites. La plupart de ces limitations s’appliquent au niveau de la table et dépendent du mode de stockage de la table. Par exemple, une colonne calculée sur une table importée peut faire référence à d’autres tables, mais une colonne calculée sur une table DirectQuery ne peut faire référence qu’aux colonnes de la même table. D’autres limitations s’appliquent au modèle dans son ensemble, si l’une des tables du modèle est en mode DirectQuery.

Pour plus d’informations sur les modèles composites et le mode DirectQuery, consultez les articles suivants :