Si vous êtes amenés à travailler sur Power BI, l’une des premières questions à laquelle vous allez devoir répondre est le choix du mode de connectivité des données : Import ou Direct Query. Comment choisir ?

Qu’est-ce que le mode import ?

Afin de comprendre quel mode de connectivité sera le plus adapté à votre besoin nous allons tout d’abord préciser ce qu’est le mode import, ses avantages et ses inconvénients.
Considéré comme le mode « par défaut » de Power BI, l’import signifie qu’une copie de vos données est chargée localement dans votre rapport Power BI.

Avantages du mode import

En mode import, les données sont disponibles localement : cela signifie que vous pourrez pleinement profiter des capacités du moteur VertiPaq (qui permet le stockage des données et la gestion de la mémoire) de Power BI à son plein potentiel. Power BI étant un outil de visualisation dynamique, chaque clic va venir modifier le contexte de filtre et va donc rafraichir les différents visuels affichés. Cette actualisation des visuels se traduit dans Power BI par la génération d’un plan de requête (effectué par le Formula Engine) permettant de récupérer les données (grâce au Storage Engine). En mode import, le storage Engine utilise donc le moteur VertiPaq pour accéder aux données stockées.

Comment cela se traduit-il concrètement ? Le rapport est très performant ! Pour un rapport de petite ou moyenne taille, quelques milisecondes seulement séparent le clic de l’actualisation des visuels. Grâce au système de cache qui est un mécanisme de stockage permettant de conserver les données fréquemment utilisées, cela donne souvent l’impression que tout est instantané, ce qui est très agréable pour les utilisateurs.

Quand la performance va, tout va ! Mais alors, quels peuvent être les inconvénients du mode import ?

Inconvénients du mode import

Le mode import trouve sa principale limite dans la volumétrie de données. Comme les données sont chargées localement, le rapport va être, dans un premier temps, considérablement alourdi.
Pour vous donner un exemple, un rapport en Direct Query qui pèse 10 000 Ko peut peser 170 000 Ko en mode import. La taille du jeu de données peut être une limite en soi car il n’est pas possible de publier sur Power BI Service un rapport dont le jeu de données serait supérieur à 1Gb (pour une capacité standard).

Toutefois si votre jeu de données est volumineux mais ne dépasse pas cette limite, cet enjeu disparaît lorsque les données sont chargées. En réalité, le problème se situe justement dans le temps de chargement : avant de pouvoir utiliser le rapport, vous allez devoir charger l’intégralité des données dans votre fichier. Si votre volumétrie est conséquente, cela peut prendre du temps. De même, une fois votre rapport publié, vous devrez rafraichir votre rapport afin de disposer des dernières données à jour, ce qui se traduit par recharger de nouveau les données localement.

Rafraichir toutes vos tables pourra donc prendre un temps conséquent en mode import si vous commencez à dépasser les dizaines de millions de lignes. Heureusement, Power BI Service vous permet de planifier des actualisations automatiques, mais seulement jusqu’à 8 fois par jour.
Ainsi, dans le cas où vous souhaitez disposer de données constamment à jour, vous devez très régulièrement actualiser le rapport et attendre parfois longtemps avant de finalement voir apparaître vos données. Dans certains cas, le mode import ne répond donc pas de manière satisfaisante au besoin exprimé. Il faut alors se tourner vers un autre mode de connectivité : le Direct Query.

Pour résumer, voici les avantages du mode import :

  • Performance
  • Accès à toutes les fonctionnalités de Power BI

Et voici ses inconvénients :

  • Limite de la taille du jeu de données
  • Rafraîchissement ponctuel

Qu’est-ce que le Direct Query ?

Si l’on chargeait les données localement pour le mode import, en mode Direct Query aucune donnée n’est stockée dans le rapport. La principale force du Direct Query est de palier les faiblesses du mode import. Attention, si la plupart des sources de données sont compatibles avec le Direct Query (SQL, Google Cloud Platform, AWS…) d’autres ne peuvent être utilisées qu’en mode import. C’est notamment le cas des fichiers plats, comme des fichiers CSV ou Excel.

Par ailleurs, notons dès maintenant qu'une source peut être compatible avec le mode Direct Query mais ne pas être optimisée pour fonctionner en mode Direct Query (cf. Inconvénients du Direct Query).

Avantages du Direct Query

Vous l’aurez compris, l’atout du Direct Query réside dans la connexion directe à la source ce qui garantit de disposer des dernières données disponibles. Il n’y a donc plus besoin de rafraichir le modèle. Cependant, chaque clic entraînera un dialogue avec la source de données. Si le fonctionnement du Formula Engine qui génère le plan de requête reste semblable, la différence se situe dans le Storage Engine. Cette fois-ci, ce dernier va venir extraire les données de la source au moment de l’exécution de la requête.

Les requêtes sont directement effectuées dans la base de données d’origine : vous êtes donc sûrs que vos utilisateurs consultent toujours les dernières données disponibles.

Ainsi, en présence d’une importante volumétrie, le mode Direct Query peut-être une option intéressante et potentiellement la seule car il permet d’ignorer les limites de capacité de données fixées par Power BI.
Toutefois, pour que cette option soit pertinente, il faut que la source de données initiale soit performante, car la performance est le gros inconvénient du Direct Query.

Inconvénients du Direct Query

Point fort du mode import, la performance pose souvent problème lors de la création d’un rapport en Direct Query. Afin de comprendre ces différences de performance, intéressons-nous rapidement au traitement de l’actualisation d’un même visuel en mode import et en mode Direct Query (grâce à Dax Studio).

Mode import :

Mode Direct Query :

En comparant ces deux captures on observe que :

  • Le Direct Query est environ 5 fois moins performant que le mode import sur ce modèle.
  • La principale différence de performance ne se trouve pas au niveau du Formula Engine (FE) mais au niveau du Storage Engine (SE), qui affiche des temps 45 fois supérieur.
  • En mode Direct Query, des requêtes SQL apparaissent et sont exécutées successivement par la source de données (dans l’exemple ci-dessus il s’agit de Google Cloud Platform).

Nous nous pencherons davantage sur ces différences et comment optimiser vos rapports en Direct Query grâce à Dax Studio dans un prochain article.

Et qu’en est-il dans les cas de forte volumétrie ? Est-ce que le Direct Query peut venir concurrencer le mode import en termes de performance ? La réponse est non. Même sur des volumétries dépassant les centaines de millions de lignes, le Direct Query sera généralement 5 fois moins performant. Dans le cas où la source de données ne serait pas optimisée pour fonctionner avec du Direct Query, cela peut même être jusqu’à 1000 fois moins performant !

Optimiser la performance en Direct Query nécessite à la fois :

  • Un travail sur les mesures Power BI afin de générer le plan de requête le plus optimal
  • Un travail sur votre source de données (partition, clustering…).

A noter qu’une autre limite du Direct Query se situe dans les contraintes imposées par Power BI lors de la création du rapport. Vous n’aurez malheureusement pas la possibilité de créer des colonnes calculées ou de faire des Calculation Group. Les modifications que vous pourrait faire dans Power Query seront également limités. En effet toutes les modifications faites dans Power Query seront en réalité traduites dans le langage de requête de la base de données et directement appliquées dans la source. Ainsi si certaines de vos étapes Power Query sont trop complexes, elles pourront ne pas être traduites par la source et cela entraînera une erreur, Power BI vous proposera alors de passer en mode import.

Pour résumer, voici les avantages du Direct Query :

  • Données toujours à jour
  • Permet de gérer des grandes volumétries de données

Et voici ses inconvénients :

  • Performance
  • Certaines fonctionnalités de Power BI ne sont pas disponibles

Comment choisir entre Direct Query et Import sur Power BI ?

Après avoir dressé la liste des avantages et des inconvénients, nous voyons donc que la principale faiblesse du Direct Query se situe au niveau de la performance.

Toutefois, plusieurs raisons peuvent justifier l’utilisation du mode Direct Query :

  • Vous disposez de petites bases de données qui sont très régulièrement mises à jour : un rapport en Direct Query permettra de présenter des chiffres actualisés (sans être contraint par la limite des 8 actualisations programmées qu’offre le mode import).
  • A l’inverse, vos bases de données sont trop volumineuses et il n’est pas possible de les charger localement.
  • Vous souhaitez ou devez répondre à un impératif de sécurité, selon lequel les données ne doivent pas être chargées localement.

Direct Query et mode import ne sont pas mutuellement exclusifs, vous pouvez également opter pour une solution hybride :

  • Des tables de faits en Direct Query
  • Des tables de dimensions en mode import (car souvent moins régulièrement mises à jour)

Si vous ne rencontrez aucun des besoins cités plus haut, nous vous recommandons d’utiliser le mode import, plus performant et offrant plus de fonctionnalités.

Quel que soit votre choix, vous pouvez retrouver nos autres conseils afin vous aidez à construire votre rapport Power BI !