Python >> Python Tutorial >  >> Python

Power BI:Wie verwende ich Python mit mehreren Tabellen im Power Query-Editor?

Dies ist die gleiche Herausforderung, die hier für R-Skripte beschrieben wurde. Dieses Setup sollte auch für Python funktionieren. Ich habe jedoch festgestellt, dass dieser Ansatz einen Nachteil hat:Er speichert die neue verbundene oder berechnete Tabelle als bearbeitete Version einer der vorherigen Tabellen. Der folgende Vorschlag zeigt, wie Sie eine völlig neue berechnete Tabelle erstellen können, ohne die Eingabetabellen zu ändern (außer dem Ändern des Datentyps der Datumsspalten von Date bis Text deswegen.)

Kurze Antwort:

Im Power Query editor , gehen Sie folgendermaßen vor:

  1. Ändern Sie den Datentyp von Date columns in beiden Spalten auf Text .

  2. Klicken Sie auf Enter Data . Nur Klicken Sie auf OK .

  3. Aktivieren Sie den neuen Table3 und verwenden Sie Transform > Run Python Script . Nur klicken Sie auf OK .

  4. Aktivieren Sie die Bearbeitungsleiste und ersetzen Sie den Inhalt durch = Python.Execute("# Python:",[df1=Table1, df2=Table2]) . Klicken Sie auf Enter .

  5. Wenn Sie dazu aufgefordert werden, klicken Sie auf Edit Permission und Run im nächsten Schritt.

  6. Unter Applied Steps , im neuen Schritt namens Run Python Script , klicken Sie auf das Zahnradsymbol, um Run Python Script zu öffnen Herausgeber.

  7. Fügen Sie das Snippet unten ein und klicken Sie auf OK .

Code:

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

Neben df3 , klicken Sie auf Table , und das war's:

Die Einzelheiten:

Die obige Liste muss sehr sorgfältig befolgt werden, damit die Dinge funktionieren. Hier sind also all die schmutzigen kleinen Details:

1. Laden Sie die Tabellen mit Get Data als CSV-Dateien in Power BI Desktop .

2. Klicken Sie auf Edit Queries .

3. In Table1 , klicken Sie auf das Symbol neben Date column , wählen Sie Text und klicken Sie auf Replace Current

4. Machen Sie dasselbe für Table2

5. Auf der Home klicken Sie auf Enter Data

6. In dem erscheinenden Feld tun Sie nichts anderes, als auf OK zu klicken .

7. Dadurch wird eine leere Tabelle mit dem Namen Table3 eingefügt unter Queries , und genau das wollen wir:

8. Gehen Sie zu Transform und klicken Sie auf Run Python Script :

9. Dies öffnet den Run Python Script Editor. Und Sie können Fangen Sie gleich hier an, Ihre Skripte zu schreiben, aber das macht die Dinge in den nächsten Schritten unnötig kompliziert. Also tun Sie nichts, außer auf OK zu klicken :

10. In der Bearbeitungsleiste sehen Sie die Formel = Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"]) . Und beachten Sie, dass Sie unter „Angewandte Schritte“ einen neuen Schritt mit dem Namen Run Python Script haben :

11. Es gibt mehrere interessante Details im obigen Screenshot, aber zuerst werden wir die Argumente der Funktion = Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"]) aufschlüsseln .

Das Teil "# 'dataset'" holds the input data for this script#(lf)" fügt einfach den Kommentar ein, den Sie im Python Script Editor sehen können . Es ist also nicht wichtig, aber Sie können es auch nicht einfach leer lassen. Ich verwende gerne etwas Kürzeres wie "# Python:" .

Das Teil [dataset=#"Changed Type"] ist ein Zeiger auf den leeren Table3 in dem Zustand, dass es unter Changed Type steht . Wenn Sie also als Letztes vor dem Einfügen eines Python-Skripts etwas anderes tun, als Datentypen zu ändern, sieht dieser Teil anders aus. Die Tabelle wird dann in Ihrem Python-Skript mit dataset verfügbar gemacht als Pandas-Datenrahmen. Vor diesem Hintergrund können wir einige sehr nützliche Änderungen an der Formel vornehmen:

12. Ändern Sie die Bearbeitungsleiste in = Python.Execute("# Python:",[df1=Table1, df2=Table2]) und drücken Sie Enter . Das ergibt Table1 und Table2 verfügbar für Ihre Python-Skripte als zwei Pandas-Datenrahmen mit dem Namen df1 und df2 .

13. Klicken Sie auf das Zahnradsymbol (oder ist es eine Blume?) neben Run Python script unter Applied Steps :

14. Fügen Sie das folgende Snippet ein:

Code:

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

Dies wird df1 beitreten und df2 auf dem Date column , und fügen Sie eine neue berechnete Spalte mit dem Namen Value3 ein . Nicht zu schick, aber mit diesem Setup können Sie alles machen Sie wollen mit Ihren Daten in die Welt von Power BI und mit der Power von Python.

15. Klicken Sie auf OK und Sie sehen Folgendes:

Sie sehen df3 aufgeführt unter den Eingabedatenrahmen df1 und df2 im blauen Quadrat. Wenn Sie andere Datenrahmen als Schritt in Ihren Berechnungen im Python-Skript zugewiesen haben, werden diese hier ebenfalls aufgelistet. Um sie in eine barrierefreie Tabelle für Power BI umzuwandeln, klicken Sie einfach auf Table wie durch den grünen Pfeil angezeigt.

16. Und das war's:

Beachten Sie, dass der Datentyp von Date column auf Date eingestellt ist standardmäßig, aber Sie können dies auf Text ändern wie zuvor erklärt.

Klicken Sie auf Home > Close&Apply um Power Query Editor zu verlassen und kehren Sie zu Power BI Desktop zurück, wo alles begann.


Sie können eine leere Abfrage erstellen und ihren Inhalt im erweiterten Editor ersetzen:

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

Danach können Sie auf das Zahnrad neben der Quelle klicken, um Ihren Python-Code hinzuzufügen, wo Sie df1 und df2 verwenden können.