J'utilise dplyr (0.7.0)
, dbplyr (1.0.0)
, DBI 0.6-1
et odbc (1.0.1.9000)
. Je voudrais faire quelque chose comme:
db1 <- DBI::dbConnect( odbc::odbc(), Driver = "SQL Server", Server = "MyServer", Database = "DB1" ) db2 <- DBI::dbConnect( odbc::odbc(), Driver = "SQL Server", Server = "MyServer", Database = "DB2" ) x <- tbl(db1, "Table1") %>% dplyr::left_join(tbl(db2, "Table2"), by = "JoinColumn")
mais je continue d'avoir une erreur qui ne semble pas vraiment avoir de substance. Lorsque j'utilise show_query
il semble que le code essaie de créer une requête SQL qui joint les deux tables sans tenir count des bases de données séparées. Par la documentation pour dplyr::left_join
j'ai aussi essayé:
x <- tbl(db1, "Table1") %>% dplyr::left_join(tbl(db2, "Table2"), by = "JoinColumn", copy = TRUE)
Mais il n'y a pas de changement dans le message de sortie ou d'erreur. Existe-t-il un moyen différent de joindre des tables à partir de bases de données distinctes sur le même server?
J'utiliserais la fonction merge()
pour effectuer la jointure gauche sur les tables. Ce serait quelque chose comme x <- merge(df1, df2, by = "JoinColumn", all.x = TRUE)
.
J'ai fait face au même problème et je n'ai pas réussi à le résoudre avec dplyr :: left_join.
Au less, j'étais capable de faire le travail en utilisant la solution de contournement suivante. Je me suis connecté à SQL Server sans déclarer une database par défaut, puis j'ai couru la requête avec sql ().
con <- dbConnect(odbc::odbc(), dsn="DWH" , uid="", pwd= "" ) data_db <- tbl( con, sql("SELECT * FROM DB1..Table1 AS a LEFT JOIN DB2..Table2 AS b ON a.JoinColumn = b.JoinColumn") )
data_db%>% …
J'espère que cela aide.