【问题标题】:Operations on multiple tables / datasets with Edit Queries and R in Power BI在 Power BI 中使用编辑查询和 R 对多个表/数据集进行操作
【发布时间】:2017-12-07 10:39:27
【问题描述】:

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

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

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

【问题讨论】:

  • 也许this 有帮助
  • 感谢您的提示!我试过了,但我对多个数据集的引用没有运气。就像对那个特定论坛的评论一样,我认为将该建议称为解决方案有点奇怪。
  • 从这篇文章到目前为止的浏览量来看,我在这里主要是在自言自语,但我终于设法找到了一个可能的解决方案。它有一些怪癖,但它有效。我已经把它写成一个答案,但如果你能做得更优雅一点,请贡献你自己的答案。希望微软的 PowerBI 团队将来能让事情变得更简单。
  • 请务必将其发布为答案。让别人受益
  • 正在处理中。

标签: r powerbi


【解决方案1】:

短版:

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


加长版

根据我的评论,这是一个基于business intelligence blog 的建议和PowerBI forum 中的贡献的解决方案:

首先,您必须编辑一些设置。转到 选项和设置 |选项。在隐私下,选择始终忽略隐私级别设置。当然风险自负...

现在,转到选项和设置|数据源设置。选择源并单击编辑权限。将其设置为 Public


现在我们可以开始了:

我将在这里从头开始,因为我不知道任何其他数据加载方法会在 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 截图

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 的主窗口中,使用 Get Data 加载tbl_A

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

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

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

除其他外,PowerBI 将日期的数据类型更改为,您猜对了,日期。这可以trigger problems 稍后。为了避免这种情况,我们可以将 both 表中日期的数据类型更改为 Text

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

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

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

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

Transform 下,单击 运行 R 脚本。如下图所示,变量dataset 将包含您脚本的原始数据。在这种情况下,如果您单击 Run R Scripttbl_B 是活动表,则它将是数据框形式的 tbl_B

现在,让脚本保持原样,单击确定,然后查看编辑栏:

上图告诉我们两个重要的事情。首先,我们可以看到该过程到目前为止进展顺利,并且我们有一张空桌子。其次,我们可以看到dataset指的是tbl_B我们在步骤之后离开它的状态Renamed Columns。如果你在其他地方读过这些东西,这部分可能会让人感到困惑。在公式栏中,您可以通过添加, dataset2=tbl_A 来输入第二个数据集,因此公式现在如下所示:

点击回车

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

点击它返回 R 并添加这个小 sn-p:

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

output <- df_temp

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

不用担心公式栏看起来很乱,直接点击output旁边的Table

就是这样!!

转到主页并单击关闭并应用退出查询编辑器。现在您可以在 Fields 下或在 Data 选项卡中检查 R 脚本的输出,如下图所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-12
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多