[英]Power BI: How to use Python with multiple tables in the Power Query Editor?
如何使用使用兩個現有表作為輸入的 Python 腳本創建新表? 例如,通過使用pandas merge執行left join
?
一些細節:
使用Home > Edit queries
您可以在Transform > Run Python Script
下使用 Python。 這將打開一個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 腳本:
您如何更改該設置以引用多個表?
樣本數據
這是兩個可以存儲為 CSV 文件並使用Home > Get Data > Text/CSV
加載的表
表格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
這與此處針對 R 腳本描述的挑戰相同。 該設置也適用於 Python。 但是,我發現這種方法有一個缺點:它將新的聯接表或計算表存儲為先前表之一的編輯版本。 下面的建議將演示如何制作一個完全新的計算表,而不改變輸入表(除了更改日期列的數據類型Date
到Text
,因為這個。)
簡短的回答:
在Power Query editor
,執行以下步驟:
將兩列中Date columns
的數據類型更改為Text
。
單擊Enter Data
。 只需單擊“ OK
。
激活新的Table3
並使用Transform > Run Python Script
。 只需單擊“ OK
。
激活公式欄並將其中的內容替換為= Python.Execute("# Python:",[df1=Table1, df2=Table2])
。 單擊Enter
。
如果系統提示您這樣做,請在下一步中單擊Edit Permission
並Run
。
在Applied Steps
,在名為Run Python Script
的新步驟中,單擊齒輪圖標以打開Run Python Script
編輯器。
插入下面的代碼片段並單擊OK
。
代碼:
import pandas as pd
df3 = pd.merge(df1, df2, how = 'left', on = ['Date'])
df3['Value3'] = df1['Value1']*df2['Value2']
在df3
旁邊,單擊Table
,就是這樣:
細節:
必須非常仔細地遵循上面的列表才能使事情正常進行。 所以這里是所有骯臟的小細節:
1.使用“ Get Data
將表作為 CSV 文件加載到 Power BI Desktop 中。
2.單擊Edit Queries
。
3.在Table1
,單擊Date column
旁邊的符號,選擇Text
並單擊Replace Current
4.對Table2
做同樣的事情
5.在Home
選項卡上,單擊Enter Data
6.在出現的框中,除了點擊OK
什么都不做。
7.這將在Queries
下插入一個名為Table3
的空表,這正是我們想要的:
8.轉到Transform
選項卡並單擊Run Python Script
:
9.這將打開Run Python Script
編輯器。 您可以從這里開始編寫腳本,但這會使接下來的步驟變得不必要地復雜。 所以什么都不做,只需點擊OK
:
10.在公式欄中,您將看到 formula = Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"])
。 請注意,您在名為Run Python Script
Applied Steps 下有了一個新步驟:
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"]
是指向處於Changed Type
狀態下的空Table3
的指針。 因此,如果您在插入 Python 腳本之前所做的最后一件事不是更改數據類型,那么這部分看起來會有所不同。 然后使用dataset
作為pandas 數據框在您的python 腳本中提供該表。 考慮到這一點,我們可以對公式進行一些非常有用的更改:
12.將公式欄更改為= Python.Execute("# Python:",[df1=Table1, df2=Table2])
並按Enter
。 這將使Table1
和Table2
作為兩個分別名為df1
和df2
數據幀可用於您的 Python 腳本。
13.單擊Applied Steps
下Run Python script
旁邊的齒輪(還是花?)圖標:
14.插入以下代碼段:
代碼:
import pandas as pd
df3 = pd.merge(df1, df2, how = 'left', on = ['Date'])
df3['Value3'] = df1['Value1']*df2['Value2']
這將在Date column
上連接df1
和df2
,並插入一個名為Value3
的新計算列。 不太花哨,但通過此設置,您可以使用 Power BI 世界中的數據和 Python 的強大功能做任何您想做的事情。
15.單擊“ OK
,您將看到:
您將看到df3
列在藍色方塊中的輸入數據df1
和df2
。 如果您在 Python 腳本中將任何其他數據框指定為計算步驟,它們也會在此處列出。 要將其變成 Power BI 的可訪問表,只需單擊綠色箭頭指示的Table
。
16.就是這樣:
請注意, Date column
的數據類型默認設置為Date
,但您可以將其更改為Text
,如前所述。
單擊“開始Home > Close&Apply
退出Power Query Editor
並返回到它在 Power BI Desktop 中開始的位置。
您可以在高級編輯器中創建一個空白查詢並替換其內容:
let
Source = Python.Execute("# Python:#(lf)",[df1=Table1, df2=Table2])
in
Source
在您可以單擊 Source 旁邊的齒輪以添加您可以使用 df1 和 df2 的 python 代碼之后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.