我有两个数据帧:zerowy_nazwa5
,zatwierdzony_nazwa5
和工作2行:
setdiff(zatwierdzony_nazwa5, zerowy_nazwa5)
setdiff(zerowy_nazwa5, zatwierdzony_nazwa5)
我如何在PowerBi中实现它?
感谢你的帮助
发布于 2018-08-30 17:20:48
读到你的问题,我假设:
执行此操作
R在Power BI中的力量并不局限于R视觉效果。您可以加载single和多个表,并使用Edit Queries > Transform > Run R Script
将它们用作R脚本和任何R功能的输入。
下面是一个使用两个合成数据帧和setdiff()的示例:
代码片段1 (来自R中的dplyr::setdiff示例)
library(dplyr)
a <- data.frame(column = c(1:10, 10))
b <- data.frame(column = c(1:5, 5))
c <- dplyr::setdiff(a, b)
# Output
# column
# 1 6
# 2 7
# 3 8
# 4 9
# 5 10
既然你没有描述你的预期输出,我假设这就是你想要的。但要注意,如果您没有使用dplyr
库,base::setdiff()将给出不同的输出:
代码片段2
c <- base::setdiff(a, b)
# output
# column
# 1 1
# 2 2
# 3 3
# 4 4
# 5 5
# 6 6
# 7 7
# 8 8
# 9 9
# 10 10
如果您仔细遵循this post中的步骤,您将能够在Power BI中完成此操作。但这里是它的本质:要重现该示例,请转到Edit Queries (Power Query Editor) > Enter Data
并单击OK
。然后使用Transform > Run R script
插入一个R脚本,并插入上面的代码片段。
如果有任何不清楚的地方,或者如果你不能重现结果,请告诉我。
发布于 2018-08-31 01:08:42
你的问题很不清楚,所以我不得不做一些假设。我会将你的问题解释为如何在Power BI中本机执行一组差异。
假设我们有表A
和B
,如下所示
Table A: Table B:
Column Column
------ ------
1 2
2 4
3
4
5
我们想要得到设置的差值A - B
Column
------
1
3
5
您可以在DAX或Power Query M语言中执行此操作:
M语言
您可以使用left反联接来完成此操作。M代码如下所示:
= Table.NestedJoin(A,{"Column"},B,{"Column"},"B",JoinKind.LeftAnti)
删除新的"B“列,就可以开始了。
另一种方法是使用Table.SelectRows
函数:
= Table.SelectRows(A, each not List.Contains(B[Column], _[Column]))
DAX语言
您只需过滤表A
即可排除表B
中的值
FILTER(A, NOT( A[Column] IN VALUES( B[Column] ) ) )
或者使用旧的CONTAINS
语法而不是IN
FILTER(A, NOT( CONTAINS( VALUES( B[Column] ), B[Column], A[Column] ) ) )
注意:正如vestland所指出的,在Power查询环境中使用R脚本当然是可能的。正如Juan指出的那样,目前不能在DAX表达式中使用R脚本。
https://stackoverflow.com/questions/52074170
复制相似问题