Comment fonctionne le Query Folding dans Power BI?

14 février 2022

Nous allons nous intéresser ici au Query Folding ou repli de requête. C’est une technique qui permet de générer une requête SQL unique correspondant à un ensemble d’étapes dans Power Query. Cette requête peut alors être utilisée pour créer une table ou une vue dans votre serveur de base de données. C’est intéressant parce que si Power BI se connecte directement à cette vue, Power Query n’aura pas à générer toute une série d’étapes puisqu’elles seront supportées par le serveur.

Nous profiterons de ce tutoriel pour montrer comment on se connecte à un serveur en local.

L’accumulation d’étapes dans Power Query peut provoquer des délais de traitements importants. Certaines opérations sont longues.  Si toutes ces étapes peuvent être supportées par le serveur alors le gain de temps est précieux.

Nous allons maintenant étudier un exemple détaillé. Nous allons d’abord voir les données que l’on a dans le serveur. Puis se connecte au serveur et contrôle l’intégration des données dans Power Query. Ensuite nous allons effectuer les étapes nécessaires de transformation dans Power Query. Après nous générerons grâce au Query Folding une requête SQL que l’on utilisera pour créer une vue dans le serveur de base de données. Enfin nous nous connecterons à cette vue avec Power BI.

Power BI se connecte à une base de données MySQL dont voici le schéma de données. Il s’agit d’une gestion de stock simple avec 3 tables. Nous avons une table « marchandise ». Pour chaque marchandise il y a au moins un « achat » et au minimum aucune « sortie » de stock. Power BI va se connecter aux 3 tables. Ensuite sous Power Query on va récupérer les données des tables « achat » et « sortie » dans la table « marchandise ».

Ci-dessous le contenue de la table « marchandise » dans le serveur.

Ci-dessous le contenue de la table « achat » dans le serveur.

Ci-dessous le contenue de la table « vente » dans le serveur.

On ouvre Power BI.

On clique sur « Obtenir les données ».

La fenêtre ci-dessous s’ouvre. Vous devez mettre le nom du serveur local et le nom de la base de données, ici « super100 ».

Le navigateur s’ouvre, Power BI s’est bien connecté au serveur. On sélectionne les tables sur lesquelles on souhaite travailler. Puis on clique sur « Transformer les données ».

Power Query s’ouvre. On retrouve bien les mêmes données que sur notre serveur. Voici les données de la table « marchandises ».

Voici les données de la table « achat ».

Enfin, voici les données de la table « sortie ».

On commence maintenant le traitement voulu sur toutes les tables. Nous ne rentrerons pas dans le détail de ce que l’on fait exactement dans l’étape. Le but ici est de faire un maximum d’étape et de voir à la fin comment le Query Folding va réagir.

Dans notre table « achat » on regroupe les données.

Les données de la table « Achat » se présentent ainsi.

On effectue la même opération de regroupement sur la table « sortie ».

Les données de la table « Sortie » se présentent ainsi.

On fusionne la table « marchandise » avec la table « achat » pour récupérer les données de la table « achat » dans la table « marchandise ».

On conserve les données souhaitées.

On recommence la même opération de fusion mais cette fois avec la table « vente ».

On conserve les données souhaitées.

Les données de la table marchandise se présentent ainsi.

On rajoute une colonne.

Nous avons terminé tous les traitements que l’on souhaitait faire.

Nous allons maintenant générer grâce au Query Folding la requête SQL voulu. Dans « Etapes appliquées » on se positionne sur l’étape de son choix. Ici la dernière. Par un clic droit on accède à « Afficher la requête native ».

Voici ci-dessous la requête SQL qui correspond à l’ensemble des transformations que l’on a fait.

Du côté du serveur on crée une vue dans laquelle on insère le code de la requête SQL.

Voilà comment se présente notre vue dans la base de données.

Retournons dans Power BI. Depuis Power Query on se connecte à nouveau à la base de données.

Le navigateur s’ouvre, on sélectionne notre vue.

La table « liste marchandise » nouvellement créée est identique à la table « marchandise » après traitement. La différence entre les deux tables est que la table « liste marchandise » n’a aucune étape de transformation. Power BI sera beaucoup plus rapide pour charger les données.

Nous espérons que cet article vous a apporter les réponses que vous cherchiez! N'hésitez pas a consulter nos formations sur notre site.

A très bientôt chez MYPE

Articles en relation

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram