在Power BI中使用"编辑查询"和"R"对多个表/数据集执行操作

ves*_*and 6 r powerbi

tbl_A and tbl_B在Power BI文件中有两个表,我想使用其中的Run R Script功能进行转换和分析Edit Queries.

在此输入图像描述

这将包括处理缺失值和连接表.但是,在启动R时,似乎我一次只能在一个表上进行操作.这是因为该Run R Script功能仅导入单击Run R Script按钮时处于活动状态的表中的数据.然后将该数据存储在dataset变量中.

在此输入图像描述

如果这是正确的,在我看来,在Power BI中R`的实际使用将非常有限.我知道我可以释放R 之前加入表格.对于像这样的简单情况,这将是一个可行的解决方案,但肯定不适用于更复杂的数据结构.有关如何在Power BI中使用R多个表进行操作的任何建议?

ves*_*and 9

精简版:

在 中Edit Queries,插入 R 脚本时,只需[dataset = "Renamed Columns", dataset2 = tbl_A]Formula bar. 在这种情况下,Renamed Columns 指的是您APPLIED STEPS插入 R 脚本的表(在 下)的状态,并tbl_A指的是另一个可供您使用的表。并检查有关隐私的所有设置。


长版

根据我的评论,这是一个基于商业智能博客的建议和PowerBI 论坛贡献的解决方案:

首先,您必须编辑一些设置。去Options and Settings | Options。在 下Privacy,选择Always ignore Privacy Level settings。当然风险自负...

在此处输入图片说明

现在,去Options and Settings | Data Source Settings。选择来源并单击Edit permissons。将其设置为Public

在此处输入图片说明


现在我们可以开始了:

我将从头开始,因为我不知道任何其他数据加载方法会在 PowerBI 中触发什么怪癖。我有两个单独的 Excel 文件,每个文件分别包含一个名为tbl_A和 的工作表tbl_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
Run Code Online (Sandbox Code Playgroud)

tbl_A 截图

在此处输入图片说明

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
Run Code Online (Sandbox Code Playgroud)

tbl_B 截图

在此处输入图片说明


在 PowerBI 的主窗口中,tbl_A使用Get Data以下命令加载:

在此处输入图片说明

做同样的事情,tbl_B这样你就会在Fields菜单下得到两个单独的表格:

在此处输入图片说明

单击选项卡Edit Queries下方Home并确保Formula Bar可见。如果没有,您可以在View以下位置激活它:

在此处输入图片说明

根据您的表的加载方式,PowerBI 将在该过程中添加几个步骤。这些步骤可见于Query Settings

在此处输入图片说明

除此之外,PowerBI 将日期的数据类型更改为您猜对的日期。这可能会在以后引发问题。为了避免这种情况,我们可以将两个表中日期的数据类型更改为Text

在此处输入图片说明

在对两个表完成此操作后,确保 tbl_B 处于活动状态,并查看Query Settings. 您会看到Changed Type在数据加载过程中添加了一个新步骤:

在此处输入图片说明

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

在此处输入图片说明

现在,下面的应用步骤Query settings应该是这样的:

在此处输入图片说明

最后一步的名称至关重要,因为您在编写 R 脚本时将不得不引用重命名列(或任何其他您想调用的名称)。最后,我们可以做到这一点。

在 下Transform,单击Run R Script。如下图所述,该变量dataset将包含脚本的原始数据。在这种情况下,tbl_B如果tbl_B单击时处于活动表,它将采用数据框的形式Run R Script

在此处输入图片说明

现在,让脚本保持原样,单击OK,然后查看公式栏:

在此处输入图片说明

上图告诉我们两个重要的事情。首先,我们可以看到这个过程到目前为止进展顺利,我们有一张空桌子。其次,我们可以看到,dataset是指tbl_B我们离开它步骤后的状态 Renamed Columns。如果您在其他地方阅读过这些内容,那么这一部分可能会令人困惑。在 中Formula bar,您可以通过添加 来输入第二个数据集, dataset2=tbl_A,这样公式现在看起来像这样:

在此处输入图片说明

Enter

在 下Query Settings,您现在将看到有一个新步骤,您可以在其中编辑 R 脚本:

在此处输入图片说明

单击它以返回 R 并添加这个小片段:

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

output <- df_temp
Run Code Online (Sandbox Code Playgroud)

当您单击 时OK,您将看到以下内容:

在此处输入图片说明

没关系,公式栏看起来像一团糟,只需继续并单击Table旁边的output

就是这个!!

在此处输入图片说明

转到Home并单击Close & Apply以退出Query Editor. 现在,您可以检查 R 脚本下的输出Fields,或在Data如下图所示的选项卡中:

在此处输入图片说明

最终结果将是您的原始版本,tbl_B其中tbl_A添加了列。不太花哨,但是现在您已经在 R 脚本中组合了两个数据集,您可以将 R 的更多部分释放到您的工作流程中。