我在Power BI文件中有两个表tbl_A and tbl_B
,我想使用Run R Script
中的Edit Queries
功能进行转换和分析。
这包括处理缺失值和连接表。但是,当启动R时,似乎我一次只能在一个表上进行操作。这是因为Run R Script
功能仅导入单击Run R Script
按钮时处于活动状态的表中的数据。然后将此数据存储在dataset
变量中。
如果这是正确的,在我看来,在Power BI中R`的实际使用将非常有限。我知道我可以在之前加入表我释放R。对于像这样的简单情况,这将是一个可行的解决方案,但肯定不适用于更复杂的数据结构。有关如何在Power BI中对 R 的多个表进行操作的任何建议吗?
答案 0 :(得分:3)
简短版:
在编辑查询中,插入R脚本时,只需在公式栏中添加[dataset = "Renamed Columns", dataset2 = tbl_A]
即可。在这种情况下,Renamed Columns
引用表的状态(在 APPLIED STEPS 下),您在其中插入R脚本,tbl_A
引用另一个表,即可以使用。并检查有关隐私的所有设置。
长版
跟进我的评论,这是一个基于business intelligence blog的建议和PowerBI forum中的贡献的解决方案:
首先,您必须编辑一些设置。转到选项和设置|选项。在隐私下,选择始终忽略隐私级别设置。你自己冒风险......
现在,转到选项和设置|数据源设置。选择源并单击编辑权限。将其设置为 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
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
tbl_B屏幕截图
在PowerBI的主窗口中,使用获取数据加载tbl_A
:
对tbl_B
执行相同操作,以便在 Fields 菜单下最终得到两个单独的表:
单击 Home 选项卡下的编辑查询,确保 Formula Bar 可见。如果没有,您可以在查看:
下激活它根据表的加载方式,PowerBI将在此过程中添加几个步骤。这些步骤在查询设置:
下可见除其他外,PowerBI将日期的数据类型更改为,您猜对了,Date。这可以trigger problems以后。为避免这种情况,我们可以将两个表中的日期数据类型更改为 Text :
在为两个表完成此操作后,请确保tbl_B处于活动状态,并查看查询设置。您可以在数据加载过程中添加新步骤Changed Type
:
我们将添加另一个步骤,以使我们即将推出的R脚本尽可能简单。在该脚本中,我们将使用rbind()
函数加入表格。除非不同表中的列名相同,否则这将触发错误。因此,请继续将B列中的名称分别从Price3
和Price4
更改为Price1
和Price2
:
现在,查询设置下的已应用步骤应如下所示:
最后一步的名称至关重要,因为您在编写R时必须引用重命名的列(或其他任何您想要调用的列)脚本。最后我们可以做到这一点。
在转换下,单击运行R脚本。如下图所示,变量dataset
将包含脚本的原始数据。在这种情况下,当您单击运行R脚本时,如果tbl_B
是活动表,则数据框将为tbl_B
:
现在,保持脚本不变,单击确定,然后查看公式栏:
上面的图片告诉我们两件重要的事情。首先,我们可以看到到目前为止流程已经顺利进行,我们有一个空表。其次,我们可以看到dataset
在我们在步骤 tbl_B
之后留下的状态中引用了Renamed Columns
。如果您在其他地方阅读过这些内容,那么这一部分可能会令人困惑。在公式栏中,您可以通过添加, dataset2=tbl_A
来输入第二个数据集,以便公式现在如下所示:
点击输入
在查询设置下,您将看到可以编辑R脚本的新步骤:
点击它返回R并添加这个小片段:
df_B <- dataset
df_A <- dataset2
df_temp <- rbind(df_A, df_B)
output <- df_temp
当您点击确定时,这就是您所看到的:
没关系,公式栏看起来像一团糟,只需点击 output 旁边的 Table 。
就是这样!!
转到主页并点击关闭&amp;应用退出查询编辑器。现在,您可以在 Fields 下的R脚本中检查输出,或者在 Data 选项卡中检查输出,如下图所示:
最终结果将是原始tbl_B
的一个版本,其中添加了tbl_A
的列。不太花哨,但既然你已经在你的R脚本中组合了两个数据集,你就能够将R的更大部分释放到你的工作流程中。