Power BI : La nouvelle façon de créer des fonctions

Publié le 05 janvier 2017 par Sopmar01 @mon_cher_watson

Depuis quelques temps, Power BI propose une nouvelle façon de travailler avec les fonctions et les paramètres, plus simple que celle proposée jadis. Cet article vise à vous expliquer en quoi consiste ces nouveautés.

Articles antérieurs en lien avec le présent article

Nous avons déjà publié plusieurs articles par le passé qui porte sur l’élaboration de requêtes de transformations dans Power BI (ou l’équivalent dans Power Query), la création de fonctions et la création de paramètres. Voici quelques-uns de ces articles, que vous voudrez peut-être relire.

Requêtes de transformations dans Power BI:

Power Query: C’est plus que du bonbon! (Démo 1)

Power Query: C’est plus que du bonbon! (Démo 2)

Power Query: Trouver le nombre de jours ouvrables

Création de transformations et de fonctions dans Power BI:

Power Query : Combiner plusieurs fichiers Excel

Power Query: Importer les données météo du site climate.weather.gc.ca

Création de paramètres dans Power BI:

Power Query : Faire pointer vos requêtes vers une nouvelle source de données

Passer des paramètres dans Power Query à l’aide d’un slicer (segment)

Le problème avec l’ancienne façon de créer des fonctions

Avec l’ancienne façon de procéder, il n’était pas possible de voir toutes les étapes de transformation d’une fonction, dans le menu d’édition de requêtes. Pour les voir, il fallait aller dans le code et remplacer les paramètres par de vraies valeurs et retirer les éléments du code qui convertissait la requête en fonction. C’était, avouons-le, utile mais désagréable. À présent, il est possible d’accéder à une requête « exemple » sous-jacente à la fonction et de modifier la fonction à partir de cette requête, tel qu’illustré dans cet article.

Créer une requête sur un seul fichier

Dans notre exemple, nous allons importer une table d’un fichier Excel. Dans les faits, cette table n’a pas besoin de transformations, le but de cet article n’étant pas de démontrer comment effectuer des transformations. Ce faisant, nous avons effectué une transformation mineure, simplement pour illustrer la procédure. Cette transformation consiste simplement à ajouter une colonne de données qui dit « Faire des transformations ». Il faut comprendre ici, que vous pourriez effectivement faire de plus sérieuses transformations (vous référez aux liens fournis en début d’article). Voici néanmoins notre requête de départ, qui est issue d’un fichier Excel. En cliquant avec le bouton droit de votre souris sur votre requête, vous apercevrez l’option Create Function (Créer une fonction). Si vous cliquez sur cette options, on vous indiquera qu’aucun paramètre n’a été trouvé pour votre fonction.  

Créer les paramètres requis par la fonction

Si votre fonction requière effectivement des paramètres, vous devrez reculer d’un pas et d’abord créer ce ou ces nouveaux paramètres. Vous pouvez atteindre la section des paramètres via le menu Home (Accueil). .. Dans notre exemple, nous allons créer le paramètre Sales_SourceFile qui servira à identifier le répertoire d’un fichier.  

Modifier le code de la requête originale

Vous devez ensuite vous assurer que votre requête originale intègre ce ou ces nouveaux paramètres. Pour ce faire, vous allez donc vous rendre dans l’éditeur de code avancé (Advanced Editor). Dans mon exemple, je vais simplement remplacer le répertoire de mon fichier par le nom de mon nouveau paramètre, soit Sales_SourceFile.  

Créer la nouvelle fonction

Maintenant, vous pouvez créer votre fonction, toujours en cliquant sur votre requête originale, avec le bouton droit de votre souris.   Vous pourrez ensuite nommer votre fonction. Pour mon exemple, j’ai choisi le nom fnGetSalesFiles.  

Tester la nouvelle fonction

Vous pouvez maintenant tester votre nouvelle fonction. Dans mon exemple, j’ai créé une nouvelle requête, en important toujours un fichier Excel de ventes, mais en choisissant celui de février plutôt que celui de janvier 2013. Ensuite, j’ai ajouté une colonne pour « invoquer la fonction ».   J’ai donc inséré les informations demandées ici. Malheureusement, comme mon fichier ne contenait pas le répertoire au long, j’ai dû l’inscrire manuellement dans cette boîte de dialogue.   Par la suite, j’ai obtenu ma nouvelle colonne. Et j’ai pu extraire la colonne « Faire des transformations », tel qu’illustré ci-dessous.  

Modifier la requête d’origine et non la fonction

Par la suite, vous pouvez toujours modifier votre fonction d’origine. Par contre, vous ne devez pas le faire en cliquant sur votre fonction, puisque vous obtiendrez le message suivant:   Si vous souhaitez modifier votre fonction, vous devez le faire via votre requête originale, i.e. celle que Power BI a renommé « … Example », dans mon cas « Table 1 Example ». J’ai fait le test en ajoutant à cette requête une nouvelle colonne, tel qu’illustré ci-dessous.   Je suis retournée dans ma nouvelle requête et j’ai pu choisir d’ajouter cette nouvelle colonne à ma requête.   Jusqu’ici, le processus a été très simple (c’était voulu) mais l’exemple choisi demeure très limitatif. Qu’en est-il si je ne veux pas simplement ajouter des colonnes additionnelles mais si je veux effectuer d’autres types de transformations? J’ai répondu à cette question, dans la prochaine section.

Pousser plus loin les modifications de la fonction

Dans l’exemple ci-dessous, j’ai effectué un filtre sur la colonne StoreID pour exclure le magasin 103.   Par la suite, j’ai importé tous les fichiers de ventes de mon dossier Sales (de 2013-01-01 à 2013-12-31), en utilisant l’option d’importation « From Folder » (À partir d’un dossier). J’ai ensuite éliminé toutes les colonnes sauf celles contenant le répertoire du dossier et le nom du fichier, tel qu’illustré ci-dessous.   Ensuite, j’ai fusionné ces deux colonnes et j’ai ajouté une nouvelle colonne pour invoquer ma fonction fnGetSalesFiles.   J’ai nommé cette nouvelle colonne fnGetSalesFiles, j’ai utilisé la fonction fnGetSalesFiles et je l’ai fait pointer sur la colonne Custom, qui contient le nom complet du répertoire.   J’ai ainsi obtenu les données de tous les fichiers du répertoire, en plus des deux colonnes ajoutées par ma fonction.   De plus, j’ai pu constaté que le filtre avait été appliqué sur le magasin 103. En effet, il n’apparaît pas dans la liste des numéros de magasins.  

Comprendre les avantages de cette nouvelle façon de faire

Vous l’aurez sans doute remarqué, avec cette nouvelle façon de faire, Power BI décortique votre fonction en 3 composantes (voir le dossier fnGetSalesFiles dans le panneau de requêtes à gauche, dans l’image ci-dessous). D’abord, vous retrouvez la fonction en tant que telle, représentée par le symbole fx. Si vous cliquez sur votre fonction, vous êtes incapable de voir les étapes de transformation. En effet, dans le panneau de droite, vous ne voyez qu’une seule étape qui pointe vers la source. Ici, tout ce que vous pouvez faire, c’est insérer le répertoire d’un fichier et de voir l’impact de la fonction sur ce fichier. Ensuite, vous retrouvez la valeur actuelle du paramètre utilisé dans votre fonction. Vous avez aussi la possibilité de modifier votre paramètre.   Finalement, vous avez la requête sous-jacente à votre fonction. Celle qui vous a effectivement permis de créer votre fonction. Ici, non seulement vous voyez toutes les étapes de transformation, dans le panneau de droite, et leur impact, dans le panneau central, mais vous pouvez aussi les modifier, en ajouter et en éliminer, au besoin.

NOTRE OFFRE DE FORMATIONS


Le CFO masqué vous offre un vaste choix de formations Excel, notamment en tableaux de bord et en modélisation financière, ainsi qu’une série de formations en BI libre-service. Ces formations sont offertes en classe, en entreprise et en ligne. Nos formateurs sont des experts dans leur domaine et ils sont accrédités par Emploi-Québec et vous remettent un certificat, à la fin de chaque formation, que vous pouvez notamment utiliser pour faire reconnaître des heures de formation continue auprès de votre ordre professionnel.

Découvrez quelles formations vous conviennent

Pour info: 514-605-7112 ou info@lecfomasque.com