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

Posted

技术标签:

【中文标题】Power BI:多个表作为 Power Query 中 Python 的输出【英文标题】:Power BI: Multiple tables as output of Python in Power Query 【发布时间】:2019-07-25 07:18:01 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

第二个表需要是 Pandas 数据框,我是否正确?

是的

这是预期的行为吗?

是的,但为什么呢?

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


一些细节:

转到 Power Query 编辑器并使用 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)])

这个sn-p构造了以下类型的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 中执行第一个sn-p,您将看到一个表格,显示在Applied Steps 下您可以使用哪个变量:

dataset是在插入Python sn-p时默认构造的,而var2var4是在代码中构造的。都是数据框。即使是pandas Seriesvar5 也无法进行进一步编辑。

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

编辑:

关于:

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

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

【讨论】:

以上是关于Power BI:多个表作为 Power Query 中 Python 的输出的主要内容,如果未能解决你的问题,请参考以下文章

Power BI中有一列日期有多个是相同的,如何在表中的X轴上全部显示出来

数据可视化之DAX篇(十五)Power BI按表筛选的思路

使用“List.Zip”替换 Power Query / Power BI / M 代码中的多个列值

Power BI 中的 M(Power Query),将参数从列表传递到 SQL 语句

Power bi怎么关联数据表?Power bi如何关联数据表啊?求解!!!

如何使用 Power BI 将一张 Excel 工作表中的多个表格转换为一张表格?