[英]From R script to Power Bi - how to use setdiff
我有兩個數據框: zerowy_nazwa5
, zatwierdzony_nazwa5
,
和工作 2 行:
setdiff(zatwierdzony_nazwa5, zerowy_nazwa5)
setdiff(zerowy_nazwa5, zatwierdzony_nazwa5)
我如何在 PowerBi 中實現它?
感謝幫助
你的問題很不清楚,所以我將不得不做出一些假設。 我將您的問題解釋為如何在 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 anti join來做到這一點。 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 Query 環境中使用R 腳本。 正如 Juan 指出的那樣,目前無法在 DAX 表達式中使用 R 腳本。
閱讀您的問題,我假設:
Power BI 中 R 的力量不僅限於 R Visuals。 您可以使用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
如果你仔細地遵循的步驟這篇文章,你將是一個能夠與該電力BI結束了。 但它的本質是:要重現該示例,請轉到“ Edit Queries (Power Query Editor) > Enter Data
,然后單擊“ OK
。 然后使用Transform > Run R script
插入一個 R 腳本並插入上面的代碼片段。
如果有任何不清楚的地方,或者您無法重現結果,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.