簡體   English   中英

Power BI:如何在 Power Query 編輯器中將 Python 與多個表一起使用?

[英]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。 但是,我發現這種方法有一個缺點:它將新的聯接表或計算表存儲為先前表之一的編輯版本。 下面的建議將演示如何制作一個完全新的計算表,而不改變輸入表(除了更改日期列的數據類型DateText ,因為這個。)

簡短的回答:

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 ,就是這樣:

在此處輸入圖片說明

細節:

必須非常仔細地遵循上面的列表才能使事情正常進行。 所以這里是所有骯臟的小細節:

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 這將使Table1Table2作為兩個分別名為df1df2數據幀可用於您的 Python 腳本。

13.單擊Applied StepsRun Python script旁邊的齒輪(還是花?)圖標:

在此處輸入圖片說明

14.插入以下代碼段:

代碼:

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

這將在Date column上連接df1df2 ,並插入一個名為Value3的新計算列。 不太花哨,但通過此設置,您可以使用 Power BI 世界中的數據和 Python 的強大功能做任何您想做的事情

在此處輸入圖片說明

15.單擊“ OK ,您將看到:

在此處輸入圖片說明

您將看到df3列在藍色方塊中的輸入數據df1df2 如果您在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM