Article
Les tables hybrides
dans Power BI
Rédigé par Benoit Distretti – Consultant BI Actinvision
Vous êtes-vous déjà demandé comment avoir les données les plus fraîches à disposition sur vos Dashboards Power BI, et ce même en ayant une large volumétrie de données dans votre modèle ? Microsoft a présenté en décembre dernier une mise à jour très attendue au sein de la communauté : les tables hybrides ! Quels sont les avantages et à quoi servent-elles ? Je vais vous présenter cette fonctionnalité !
Prérequis techniques
Lorsque vous allez importer vos données dans Power BI, 2 types de connexion s’offrent à vous :
Importer
DirectQuery
Importer des données
Cette méthode charge les données au sein de Power BI. La totalité du contenu des tables sélectionnées est importée dans le cache de l’application.
Ce mode permet de charger des données provenant de plusieurs sources différentes. On peut ensuite gérer les jointures et / ou en créer pour celles non générées par l’auto-détection grâce à l’onglet « Modèle ».
On peut ensuite utiliser différentes fonctions DAX, pour transformer les données et enrichir notre jeu de données fraichement acquis, sans risque d’impacter les performances !
Direct Query
La méthode DirectQuery quant à elle, permet de se connecter en direct sur la base de données source. Aucune donnée ne va être importée dans l’application. Au lieu de cela, des requêtes vont être nécessaires pour remonter les informations souhaitées.
Ce mode de connexion permet de travailler sur des données en quasi-temps réel, pour rafraichir les données il suffit de cliquer sur un visuel ou actualiser le rapport.
Cependant, ce mode n’est pas compatible avec toutes les sources de données, et on ne peut en avoir qu’une seule dans le rapport. Les types de sources disponibles sont accessibles dans cette documentation Microsoft
.
Pour utiliser les tables hybrides, il est nécessaire d’utiliser une source de données compatible avec le mode DIrectQuery, dans cet article j’utiliserai une base de données Azure Database.
Présentation de la fonctionnalité
Vous l’aurez compris, l’avantage du mode de connexion en import est de travailler avec plusieurs sources simultanément et de transformer les données acquises. Le DirectQuery quant à lui nous permet de travailler / visualiser en quasi-temps réel. Les tables hybrides, elles, permettent de combiner ces deux modes de connexion !
Le mode de fonctionnement est assez simple :
Nous avons une table de fait avec, disons, 3 ans de données d’historique que nous analysons. Nos données sources sont enrichies au fur et à mesure tous les jours, mais par soucis d’efficacité nous ne rechargeons les données qu’une fois par jour en début de matinée.
Cette nouvelle fonctionnalité va nous permettre de partitionner cette table de fait en plusieurs partitions.
Le but est de nous permettre de garder en IMPORT toutes les données des 3 dernières années en tant que données « archivées », et les données les plus récentes (disons le dernier mois) en DIRECTQUERY comme données « incrémentales ».
Mise en place de la fonctionnalité
Il faut commencer par mettre en place l’actualisation incrémentielle du jeu de données. Cette fonctionnalité permet de partitionner notre jeu de données (entièrement géré par Power BI, ce ne sont que quelques clics à effectuer de notre côté pas de panique !), pour actualiser uniquement la ou les partitions, et non pas le jeu de données entier. Cela nous permet de réduire significativement la quantité de données à actualiser, tout en garantissant que les modifications les plus récentes de la source sont incluses dans notre jeu de données.
Comment la mettre en place ? Rien de compliqué, on commence par créer 2 paramètres dans Power Query.
Une fois créés, ces paramètres vont permettre de filtrer notre table sur des colonnes de type Date selon cette formule Power Query M :
each [Invoice Date Key] > RangeStart and [Invoice Date Key] < RangeEnd)
Cette formule permet tout simplement de filtrer nos données sur la période définie par les paramètres, autrement dit à 1 mois.
Ou en appliquant les paramètres comme filtre de dates et heures personnalisées
Ensuite on ferme et on applique les modifications.
De retour dans Power BI Desktop,
Comme vous pouvez le voir, l’actualisation incrémentielle comporte 2 périodes à renseigner :
La période de données à archiver (en années/mois/trimestres/jours/ …)
La période de données à charger de manière incrémentielle (en années/mois/trimestres/jours/…)
Et en paramètre supplémentaire, l’obtention des données récentes en temps réel.
Il suffit de cocher une case supplémentaire autre que celle du chargement incrémentiel.
Le 4ème point affiché présente les différentes partitions, qui vont s’appliquer sur le jeu de données une fois celui publié sur Power BI Service. Elles sont aussi gérées par ce dernier.
Comment ces partitions se présentent-elles ?
En faisant un focus rapide sur un exemple de partitions créées, on peut voir ceci :
Les 3 premières années vont être stockées dans des partitions en IMPORT et archivées
Les 12 mois suivants vont être stockés dans des partitions en IMPORT et incrémentalement actualisés
La partition des données en temps réelle quant à elle sera en DIRECTQUERY
Cependant, il y a quelques paramètres à prendre en compte lorsqu’on souhaite mettre en place ces données en temps réel (aussi appelées tables hybrides).
1. Cette fonctionnalité n’est disponible qu’avec une licence Premium uniquement
2. Le temps réel utilisant le Direct Query comme connexion, les limitations s’y appliquant rentrent en compte (comme présenté au début de l’article)
3. Il n’est pas possible d’écraser un rapport existant qui utilise des tables hybrides dans Power BI Service. Cette action écraserait les partitions existantes et les données qui y sont stockées.
4. Il n’est pas possible de télécharger un jeu de données (et donc un rapport au format PBIX) qui utilise des partitions depuis Power BI Service.
La solution présente également plusieurs avantages :
1. En actualisant seulement les données récentes sur une plage réduite cela permet de réduire les cycles d’actualisation, grâce au mode de connexion DirectQuery.
2. Ces cycles sont donc plus courts et plus fiables, les jeux de données étant réduis.
3. Les jeux de données étants réduis, les cycles d’actualisation le sont tout autant, ce qui augmente significativement les performances de votre rapport.
Faites appel à un consultant pour votre projet Power BI >