Power BI:多个表作为Power Query中Python的输出

时间:2019-07-25 07:18:01

标签: python powerbi powerquery powerbi-desktop

我正在Power BI的Power Query编辑器中运行Python脚本来转换和处理数据。这些计算之后,我想将数据集和另一个表返回给Power Query编辑器。我是否正确,第二张表必须是Pandas Dataframe?

仅当将第二张表从numpy.ndarray转换为pandas.DataFrame时,Power BI才将其识别为表格输出(result after script)。这是预期的行为吗?除Pandas Dataframe以外的其他Python对象是否可以传递给Power BI?

1 个答案:

答案 0 :(得分:1)

  

我是否纠正第二张表需要为Pandas Dataframe吗?

  

这是预期的行为吗?

是,但是为什么?

您可以使用Python构造很多变量类型,并且要求Power BI应该识别所有变量类型会很多。而且,似乎不是为了让Power BI识别 some 变量类型,而是为了简化起见,开发人员决定在DataFrames处划界。就个人而言,我认为这是一个明智的决定。这样,如果出现任何问题,您将知道这不是数据类型问题。


一些详细信息:

转到Power Query Editor,并使用Enter Data > OK插入一个空表。然后使用Transform > Run Python Script在下面插入脚本:

# 'dataset' holds the input data for this script
import numpy as np
import pandas as pd
var1 = np.random.randint(5, size=(2, 4))
var2 = pd.DataFrame(np.random.randint(5, size=(2, 4)))
var3 = 3
var4 = pd.DataFrame([type(var3)])
var5 = pd.Series([type(var3)])

此代码段构造了以下类型的5个变量:

print(type(var1))
<class 'numpy.ndarray'>

print(type(var2))
<class 'pandas.core.frame.DataFrame'>

print(type(var3))
<class 'int'>

print(type(var4))
<class 'pandas.core.frame.DataFrame'>

print(type(var5))
<class 'pandas.core.series.Series'>

具体来说,我没有在PowerBI中运行print()命令,而是在Spyder中运行。 现在,如果您单击OK并执行The Power Query Editor中的第一个代码段,将显示一个表格,显示在Applied Steps下哪个变量对您可用:

enter image description here

dataset是在插入Python代码段时通过defult构造的,而var2var4是在代码中构造的。所有都是数据帧。即使是var5的{​​{1}}也无法进行进一步的编辑。

我希望这会有所帮助。如果没有,那就不要犹豫,让我知道!

编辑:

关于:

  

这些计算之后,我想返回数据集和另一个   表到Power Query编辑器。

您可以加载任何表并使用Python对其进行编辑。如果您想保留该表的一个版本,并在另一个表上进行进一步的编辑,则应查看Edit python script used as Data entry in Power BI