Comment joindre des tables de différentes bases de données SQL en utilisant R et dplyr?

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.