簡體   English   中英

從 R 腳本到 Power Bi - 如何使用 setdiff

[英]From R script to Power Bi - how to use setdiff

我有兩個數據框: zerowy_nazwa5zatwierdzony_nazwa5

和工作 2 行:

setdiff(zatwierdzony_nazwa5, zerowy_nazwa5)
setdiff(zerowy_nazwa5, zatwierdzony_nazwa5)

我如何在 PowerBi 中實現它?

感謝幫助

你的問題很不清楚,所以我將不得不做出一些假設。 我將您的問題解釋為如何在 Power BI 中本機執行一組差異。


假設我們有如下表AB

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 腳本。

閱讀您的問題,我假設:

  1. 您的主要目標是在 PowerBI 內部執行此操作
  2. 您並沒有特別詢問如何使用 DAX

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM