web-dev-qa-db-ja.com

Power BI:Power QueryEditorの複数のテーブルでPythonを使用する方法は?

Pythonスクリプトで2つの既存のテーブルを入力として使用する新しいテーブルを作成するにはどうすればよいですか?たとえば、 pandas merge を使用して_left join_を実行しますか?

いくつかの詳細:

_Home > Edit queries_を使用すると、Python under _Transform > Run Python Script_)を利用できます。これにより、_Run Python Script_ダイアログボックスが開き、_'#dataset' holds the input data for this script_と通知されます。 OKをクリックして数式バーを見ると、同じフレーズが見つかります。

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

これにより、_Applied Steps_の下に_Run Python script_という新しいステップが追加され、右側の歯車記号をクリックしてPythonスクリプトを編集できます:

enter image description here

複数のテーブルを参照するように設定を変更するにはどうすればよいですか?


サンプルデータ

CSVファイルとして保存し、_Home > Get Data > Text/CSV_を使用して読み込むことができる2つのテーブルを次に示します。

表1

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

表2

_Date,Value2
2108-10-12,10
2108-10-13,11
2108-10-14,12
2108-10-15,13
2108-10-16,14
_
4
vestland

これは、Rスクリプト here で説明したのと同じ課題です。その設定はPythonでも機能するはずです。ただし、approcahには1つの欠点があることがわかりました。それは、新しい結合テーブルまたは計算テーブルを、前のテーブルの1つの編集バージョンとして保存することです。次の提案は、入力テーブルを変更せずに完全に新しい計算テーブルを作成する方法を示しています( this のため、Date列のデータ型をDateからTextに変更する場合を除く)。 。)

短い答え:

Power Query editorで、次の手順に従います。

  1. 両方の列のDate columnsのデータ型をTextに変更します。

  2. Enter Dataをクリックします。 のみOKをクリックします。

  3. 新しいTable3をアクティブにして、Transform > Run Python Scriptを使用します。 のみOKをクリックします。

  4. 数式バーをアクティブにして、その中身を= Python.Execute("# Python:",[df1=Table1, df2=Table2])に置き換えます。 Enterをクリックします。

  5. プロンプトが表示されたら、次の手順でEdit PermissionRunをクリックします。

  6. Applied Stepsの下で、Run Python Scriptという名前の新しいステップで、歯車アイコンをクリックしてRun Python Scriptエディターを開きます。

  7. 以下にスニペットを挿入し、OKをクリックします。

コード:

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

df3の横にあるTableをクリックすると、次のようになります。

enter image description here

詳細:

上記のリストは、物事を機能させるために非常に注意深く従う必要があります。だからここにすべての汚い小さな詳細があります:

1。Get Dataを使用して、テーブルをCSVファイルとしてPower BIDesktopに読み込みます。

2。Edit Queriesをクリックします。

3。Table1で、Date columnの横にある記号をクリックし、Textを選択して、Replace Currentをクリックします。

enter image description here

4。Table2についても同じようにします

5。Homeタブで、Enter Dataをクリックします。

6。表示されたボックスで、OKをクリックする以外に何もしません。

enter image description here

7。これにより、Table3という名前の空のテーブルがQueriesの下に挿入されます。これがまさに必要なことです。

enter image description here

8。Transformタブに移動し、Run Python Scriptをクリックします。

enter image description here

9。これにより、Run Python Scriptエディターが開きます。そして、あなたは can ここでスクリプトを書き始めることができますが、それは次のステップで物事を不必要に複雑にします。したがって、OKをクリックするだけです。

enter image description here

10。数式バーで、数式= Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"])を選択します。また、[適用されたステップ]の下にRun Python Scriptという名前の新しいステップがあることに注意してください。

enter image description here

11。上のスクリーンショットにはいくつかの興味深い詳細がありますが、最初に関数= Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"])の引数を分解します。 。

"# 'dataset'" holds the input data for this script#(lf)"の部分は、Python Script Editorに表示されるコメントを挿入するだけです。したがって、それは重要ではありませんが、空白のままにすることもできません。 "# Python:"のような短いものを使用するのが好きです。

部分[dataset=#"Changed Type"]は、Table3の下にある状態の空のChanged Typeへのポインターです。したがって、Pythonスクリプトを挿入する前に最後に行うことは、データ型の変更以外のことである場合、この部分は異なって見えます。次に、datasetをpythonデータフレームとして使用して、pandasスクリプトでテーブルを使用できるようにします。これを念頭に置いて、式に非常に便利な変更を加えることができます。

12。数式バーを= Python.Execute("# Python:",[df1=Table1, df2=Table2])に変更し、Enterを押します。これにより、Table1Table2がそれぞれdf1df2という名前の2つのPythonデータフレームとしてpandasスクリプトで使用できるようになります。

13。Run Python scriptの下のApplied Stepsの横にある歯車(または花ですか?)アイコンをクリックします。

enter image description here

14。次のスニペットを挿入します。

コード:

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

これにより、df1df2Date columnが結合され、Value3という名前の新しい計算列が挿入されます。あまり凝っていませんが、このセットアップを使用すると、Power BIの世界のデータとPythonのパワーを使用して、何でも実行できます。

enter image description here

15。OKをクリックすると、次のように表示されます。

enter image description here

青い四角の入力データフレームdf3df1の下にdf2が表示されます。 Pythonスクリプトで計算のステップとして他のデータフレームを割り当てた場合、それらもここに一覧表示されます。 Power BIでアクセス可能なテーブルに変換するには、緑色の矢印で示されているようにTableをクリックするだけです。

16。そしてそれだけです:

enter image description here

Date columnのデータ型はデフォルトでDateに設定されていますが、前に説明したようにTextに変更できることに注意してください。

Home > Close&ApplyをクリックしてPower Query Editorを終了し、Power BIDesktopですべてが開始された場所に戻ります。

10
vestland

空白のクエリを作成し、その内容をAdvancedEditorで置き換えることができます。

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

ソースの横にある歯車をクリックして、df1とdf2を使用できるpythonコードを追加できます。