是否可以从PowerBI读取PBI Slicer的选定值并在R脚本(数据源)中使用它来检索结果,从而生成新的数据源。
问题是列过滤器在使用 R 脚本生成的数据帧上效果很好,但我需要的是根据特定列的选定值进行计算,而不仅仅是过滤数据。
为了简单起见,我会这样说,是否可以在 PowerBI 中创建动态 Rscript 而不是静态 Rscript?
通过在查询编辑器 UI 中进行尽可能多的数据转换,您可能会取得更多进展。
您的要求听起来像“添加自定义列”或“添加条件列”,您可以在其中根据其他列中的值派生新列。
背景: 我知道这是一篇较旧的帖子,但我相信我是根据自己的项目需求来解决这个问题的,并且它在一个小例子中工作得很好。我可以说,当我将它转换为大型数据集时,它非常慢,以至于我可能不会使用它;然而,我想也许我应该分享这些发现。 我的目标是通过“R脚本视觉”通过ggplot2::geom_col创建一个堆积柱形图。然后,我希望能够根据切片器中的用户选择来更改数据的填充方式(颜色编码)。
答案: 为此,我有以下示例表:
然后我在报告上看到了以下视觉效果。值得注意的是,切片器是使用“Fill_To_R”表制作的,其想法是用户选择要传递到 R 脚本中的值。
然后创建一个定义为切片器中选择的值的度量,这就是传递到 R 脚本中的值。我在报告的最右侧添加了一张“卡片”,它只是显示度量(即所选值)。
然后创建 R 视觉对象,引入要绘制的数据 (X,Y) 以及我想要按颜色编码的参数 (“Filter_Foo”、“Filter_Bar”),但最重要的是定义的度量 (“选择”)。
我用来生成图形的 R 脚本在这里。请注意,我必须引用“dataset$Selection[1]”的第一条记录 - 没有索引号,它不起作用。
require("ggplot2")
library(ggplot2)
ggplot() +
{if(dataset$Selection[1]=="Filter_Foo"){geom_col(data = dataset, aes(y = Y, x = X, fill=Filter_Foo), width=0.8)}} +
{if(dataset$Selection[1]=="Filter_Bar"){geom_col(data = dataset, aes(y = Y, x = X, fill=Filter_Bar), width=0.8)}} +
xlab("X Category") +
ylab("Total Y") +
coord_cartesian(xlim = c(0,10), ylim=c(0,25)) +
annotate(geom="text", label = paste0("Selection: ", dataset$Selection[1]), x=1, y=25, vjust=1, hjust=1, size= 3, col="black")
现在,根据用户是否选择了“Filter_Bar”或“FilterFoo”,R 视觉效果将采用该值并相应地调整绘图。您可以直接扩展此示例,也可以将其用作将度量读取到 R 中的参考,以便按照您的意愿使用它。