使用Power BI中的“编辑查询”和R进行多个表/数据集的操作

14

我在Power BI文件中有两个表格tbl_A和tbl_B,我想使用Run R Script功能在Edit Queries中转换和分析它们。

enter image description here

这将包括处理缺失值和连接表格。但是,当开始使用R时,似乎只能一次对一个表格进行操作。这是因为 运行R脚本 功能仅从您单击 运行R脚本 按钮时处于活动状态的表格中导入数据。然后将此数据存储在 数据集 变量中。

enter image description here

如果这是正确的,那么在Power BI中实际使用R的实用性将非常有限。我知道我可以在释放R之前加入表格。对于这样简单的情况来说,这将是一个可行的解决方案,但对于更复杂的数据结构来说则不然。有关如何在Power BI中使用R执行多个表格操作的建议吗?

3
也许 这篇帖子 可以帮助您。 - akrun
谢谢你的建议!我尝试了一下,但是在引用多个数据集方面没有成功。就那个论坛而言,我认为称那个建议为解决方案有点奇怪。 - vestland
1
从目前为止这篇文章所获得的浏览量来看,我大多数时间都在和自己说话,但最终我设法找到了一个可能的解决方案。它有一些小问题,但是它可以工作。我已经将其编写成答案,但如果您能够更加优雅地实现它,请贡献您自己的答案。希望微软的PowerBI团队在未来能够让事情变得更容易些。 - vestland
1
请将此作为答案发布,这样其他人就可以受益。 - akrun
1
正在处理中。 - vestland
1个回答

14
编辑查询中插入R脚本时,只需在公式栏中添加[dataset = "Renamed Columns", dataset2 = tbl_A]。在这种情况下,Renamed Columns是指您正在插入R脚本的表格状态(在应用步骤下),tbl_A是另一个可用的表格。请检查与隐私相关的所有设置。

长版本

针对我的评论,以下是一种解决方案,它建立在商业智能博客的建议和PowerBI论坛中的贡献之上:

首先,您需要编辑一些设置。转到选项和设置|选项。在隐私下,选择始终忽略隐私级别设置。当然,这是自担风险的...

enter image description here

现在,前往选项和设置 | 数据源设置。选择数据源并点击编辑权限。将其设置为公共

enter image description here


现在我们可以开始了:
从头开始操作,因为我不知道任何其他数据加载方法会在PowerBI中触发什么异常。我有两个单独的Excel文件,每个文件都包含一个名为tbl_Atbl_B的工作表。
这两个表的数据如下所示: tbl_A 数据
Date        Price1  Price2
05.05.2016  23,615  24,775
04.05.2016  23,58   24,75
03.05.2016  0       24,35
02.05.2016  22,91   24,11
29.04.2016  22,93   24,24

tbl_A 截图

enter image description here

tbl_B 数据

Date        Price3  Price4
02.06.2016  19,35   22,8
01.06.2016  19      22,35
31.05.2016  19,35   22,71
30.05.2016  15,5    21,85
27.05.2016  19,43   22,52

tbl_B 截图

enter image description here


在PowerBI的主窗口中,使用获取数据加载tbl_A:

enter image description here

接下来,对tbl_B执行同样的操作,这样你就可以在Fields菜单下看到两个独立的表格:

enter image description here

点击 首页 标签下的 编辑查询,确保 公式栏 可见。如果不可见,可以在 查看 下激活它:

enter image description here

根据您的表格加载方式,PowerBI将在过程中添加一些步骤。这些步骤可在查询设置下看到:

enter image description here

除其他外,PowerBI 还会将日期的数据类型更改为 (你猜对了) 日期。这可能会引发后续的问题触发。为了避免这种情况,我们可以将两个表中日期的数据类型更改为文本

enter image description here

在对两个表格都完成这一步骤后,确保 tbl_B 处于活动状态,并查看 查询设置。您会发现在数据加载过程中添加了一个新步骤 更改类型

enter image description here

我们将添加另一步以使即将到来的R脚本尽可能简单。在该脚本中,我们将使用rbind()函数连接表格。除非不同表格中的列名相同,否则会触发错误。因此,请将B列中的名称从Price3Price4更改为分别为Price1Price2

enter image description here

现在,查询设置下的应用步骤应该如下所示:

enter image description here

最后一步的名称非常重要,因为在编写 R 脚本时,您将不得不引用“已重命名列”(或其他任何您想要称呼它的名称)。最后,我们可以开始实现这一步骤。
在“转换”下,点击“运行 R 脚本”。如下图所示,变量“dataset”将包含脚本的原始数据。在本例中,如果在单击“运行 R 脚本”时活动表是 tbl_B,则将是一个数据框以 tbl_B 的形式:

enter image description here

现在,将脚本保持不变,点击确定,并查看公式栏:

enter image description here

上面的图片告诉我们两个重要的事情。首先,我们可以看到这个过程到目前为止顺利进行,并且我们有一个空表格。其次,我们可以看到dataset指的是Renamed Columns步骤后我们留下的tbl_B状态。如果你在其他地方读到过这些内容,这可能会让人感到困惑。在公式栏中,您可以通过添加,dataset2=tbl_A来输入第二个数据集,使公式现在看起来像这样:

enter image description here

按下 Enter

查询设置 下,你现在会看到一个新的步骤,你可以在其中编辑你的 R 脚本:

enter image description here

点击它,返回R并添加这个小片段:

df_B <- dataset
df_A <- dataset2
df_temp <- rbind(df_A, df_B)

output <- df_temp

当您点击确定时,您将看到以下内容:

enter image description here

不要在意公式栏看起来很乱,直接点击"output"旁边的"Table"即可。
就是这样!

enter image description here

前往主页并点击关闭并应用以退出查询编辑器。现在,您可以在字段下检查来自您的R脚本的输出,或者像下面的图片中一样在数据选项卡中查看:

enter image description here

最终结果将是您原始的 tbl_B 版本,其中包含来自 tbl_A 的列。不太花哨,但现在您已经在 R 脚本中合并了两个数据集,可以释放 R 更大的部分来处理您的工作流程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接