17 votes

Power BI : Comment utiliser Python avec plusieurs tables dans l'éditeur de requêtes Power ?

Comment créer une nouvelle table avec un script Python qui utilise deux tables existantes en entrée ? Par exemple en effectuant un left join en utilisant fusion de pandas ?

Quelques détails :

Utilisation de Home > Edit queries vous pouvez utiliser Python sous Transform > Run Python Script . Cela ouvre une Run Python Script où l'on vous dit que '#dataset' holds the input data for this script . Et vous trouverez la même phrase si vous cliquez juste sur OK et regardez la barre de formule :

= Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"])

Cela ajoute également une nouvelle étape sous Applied Steps appelé Run Python script où vous pouvez éditer le script Python en cliquant sur le symbole de l'engrenage à droite :

enter image description here

Comment pouvez-vous modifier cette configuration pour faire référence à plus d'une table ?


Exemple de données

Voici deux tableaux qui peuvent être stockés sous forme de fichiers CSV et chargés à l'aide de la fonction Home > Get Data > Text/CSV

Tableau 1

Date,Value1
2108-10-12,1
2108-10-13,2
2108-10-14,3
2108-10-15,4
2108-10-16,5

Tableau 2

Date,Value2
2108-10-12,10
2108-10-13,11
2108-10-14,12
2108-10-15,13
2108-10-16,14

34voto

vestland Points 3267

C'est le même défi qui a été décrit pour les scripts de R. aquí . Cette configuration devrait également fonctionner pour Python. Cependant, j'ai constaté que cette approche présente un inconvénient : Elle stocke la nouvelle table jointe ou calculée comme une version éditée d'une des tables précédentes. La suggestion suivante démontre comment vous pouvez produire un tableau calculé complètement nouveau sans modifier les tableaux d'entrée (sauf pour changer le type de données des colonnes Date de Date a Text à cause de este .)

Réponse courte :

Dans le Power Query editor Suivez les étapes suivantes :

  1. Modifiez le type de données de la Date columns dans les deux colonnes pour Text .

  2. Cliquez sur Enter Data . Seulement cliquez sur OK .

  3. Activez le nouveau Table3 et utiliser Transform > Run Python Script . Seulement cliquez sur OK .

  4. Activez la barre de formule et remplacez ce qui s'y trouve par = Python.Execute("# Python:",[df1=Table1, df2=Table2]) . Cliquez sur Enter .

  5. Si l'on vous demande de le faire, cliquez sur Edit Permission y Run à l'étape suivante.

  6. Sous Applied Steps dans la nouvelle étape nommée Run Python Script cliquez sur l'icône de l'engrenage pour ouvrir la fenêtre Run Python Script éditeur.

  7. Insérez l'extrait ci-dessous et cliquez sur OK .

Code :

import pandas as pd
df3 = pd.merge(df1, df2, how = 'left', on = ['Date'])
df3['Value3'] = df1['Value1']*df2['Value2']

Suivant df3 , cliquez Table et c'est tout :

enter image description here

Les détails :

La liste ci-dessus devra être suivie très attentivement pour que les choses fonctionnent. Voici donc tous les petits détails :

1. Charger les tableaux en tant que fichiers CSV dans Power BI Desktop en utilisant Get Data .

2. Cliquez sur Edit Queries .

3. Sur Table1 Cliquez sur le symbole à côté de l'icône Date column , sélectionnez Text et cliquez sur Replace Current

enter image description here

4. Faites de même pour Table2

5. Sur le Home cliquez sur Enter Data

6. Dans la boîte qui apparaît, ne faites rien d'autre que de cliquer sur OK .

enter image description here

7. Cela va insérer une table vide nommée Table3 sous Queries et c'est exactement ce que nous voulons :

enter image description here

8. Allez à la Transform et cliquez sur Run Python Script :

enter image description here

9. Cela ouvre le Run Python Script éditeur. Et vous peut commencer à écrire vos scripts ici même, mais cela rendra les choses inutilement compliquées dans les étapes suivantes. Donc ne faites rien d'autre que de cliquer OK :

enter image description here

10. Dans la barre de formule, vous verrez la formule = Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"]) . Et remarquez que vous avez une nouvelle étape sous Étapes appliquées nommée Run Python Script :

enter image description here

11. Il y a plusieurs détails intéressants dans la capture d'écran ci-dessus, mais nous allons d'abord décomposer les arguments de la fonction = Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"]) .

La partie "# 'dataset'" holds the input data for this script#(lf)" insère simplement le commentaire que vous pouvez voir dans le fichier Python Script Editor . Ce n'est donc pas important, mais vous ne pouvez pas non plus le laisser vide. J'aime utiliser quelque chose de plus court comme "# Python:" .

La partie [dataset=#"Changed Type"] est un pointeur vers l'objet vide Table3 dans l'état où il se trouve Changed Type . Ainsi, si la dernière chose que vous faites avant d'insérer un script Python est autre chose que de changer les types de données, cette partie sera différente. La table est ensuite rendue disponible dans votre script python en utilisant dataset comme un cadre de données pandas. En gardant cela à l'esprit, nous pouvons apporter quelques modifications très utiles à la formule :

12. Changez la barre de formule en = Python.Execute("# Python:",[df1=Table1, df2=Table2]) et frappez Enter . Cela rendra Table1 y Table2 disponibles pour vos scripts Python sous la forme de deux dataframes pandas nommés df1 y df2 respectivement.

13. Cliquez sur l'icône d'engrenage (ou est-ce une fleur ?) à côté de Run Python script sous Applied Steps :

enter image description here

14. Insérez l'extrait suivant :

Code :

import pandas as pd
df3 = pd.merge(df1, df2, how = 'left', on = ['Date'])
df3['Value3'] = df1['Value1']*df2['Value2']

Cela rejoindra df1 y df2 sur le Date column et insérez une nouvelle colonne calculée nommée Value3 . Ce n'est pas très fantaisiste, mais avec cette configuration vous pouvez faire tout ce qui est vous voulez avec vos données dans le monde de Power BI et avec la puissance de Python.

enter image description here

15. Cliquez sur OK et vous verrez ça :

enter image description here

Vous verrez df3 énumérés sous les cadres de données d'entrée df1 y df2 dans le carré bleu. Si vous avez assigné d'autres dataframes comme étape dans vos calculs dans le script Python, ils seront également listés ici. Afin de le transformer en un tableau accessible pour Power BI, il suffit de cliquer sur Table comme indiqué par la flèche verte.

16. Et c'est tout :

enter image description here

Notez que le type de données de l'élément Date column est réglé sur Date par défaut, mais vous pouvez le changer en Text comme expliqué précédemment.

Cliquez sur Home > Close&Apply pour quitter la Power Query Editor et revenir à l'endroit où tout a commencé dans Power BI Desktop.

8voto

Vous pouvez créer une requête vierge et remplacer son contenu dans l'éditeur avancé :

let
    Source = Python.Execute("# Python:#(lf)",[df1=Table1, df2=Table2])
in
    Source

Ensuite, vous pouvez cliquer sur l'engrenage près de la source pour ajouter votre code python où vous pouvez utiliser df1 et df2.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X