我有两个数据帧:zerowy_nazwa5
,zatwierdzony_nazwa5
,
工作2行:
setdiff(zatwierdzony_nazwa5, zerowy_nazwa5)
setdiff(zerowy_nazwa5, zatwierdzony_nazwa5)
我如何在PowerBi中实现这一点?
感谢帮助
答案 0 :(得分:1)
您的问题尚不清楚,所以我将不得不做一些假设。 我将把您的问题解释为如何在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语言
您可以使用左反连接来执行此操作。 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] ) ) )
注意:正如《战地》指出的那样,在Power Query环境中当然可以使用R脚本。正如Juan指出的那样,当前不可能在DAX表达式中使用R脚本。
答案 1 :(得分:0)
阅读您的问题,我想是这样的:
Power BI中R的力量不限于R Visuals。您可以同时加载single和多个表,并使用Edit Queries > Transform > Run R Script
将它们用作R脚本和 any 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脚本并插入上面的代码段。
如果不清楚,或者您无法重现结果,请告诉我。