dplyr-错误:x和y不共享相同的src。设置copy = TRUE可将y复制到x的源中(这可能很耗时)

ARI*_*ITI 5 r dplyr

通常,使用以下连接方法并从redshift运行查询不会造成任何麻烦

require("RPostgreSQL")
drv <- dbDriver("PostgreSQL")
conn <- dbConnect(drv, dbname = "redshiftdb",
 host = "XX.XX.XX.XX", port = "1234",
 user = "userid", password = "pwd")

my_data <- dbGetQuery(conn, "select a.*, b.* from redshiftdb.schema1.table1 inner join redshiftdb.schema2.table2 on a.key = b.key")
Run Code Online (Sandbox Code Playgroud)

但是这种方法的问题是人们可以使用冗长而复杂的SQL查询,这在重新设计时难以调试和说明。除非我是硬核SQL编码器。

自9月以来,我一直在学习R语言,我认为使用dplyr联接和管道进行相同的工作会很有趣。我使用连接

conn <- src_postgres(dbname = "redshiftdb",
 host = "XX.XX.XX.XX", port = 1234,
 user = "userid",
 password = "pwd")
my_tbl1 <- tbl(conn, dplyr::sql('select * from schema1.table1'))
my_tbl2 <- tbl(conn, dplyr::sql('select * from schema1.table2'))
my_tbl3 <- tbl(conn, dplyr::sql('select * from schema1.table3'))
my_tbl4 <- tbl(conn, dplyr::sql('select * from schema1.table4'))
my_tbl5 <- tbl(conn, dplyr::sql('select * from schema2.table1'))
my_tbl6 <- tbl(conn, dplyr::sql('select distinct var1, var2 from schema2.table2'))
my_tbl7 <- tbl(conn, dplyr::sql('select * from schema2.table3'))
Run Code Online (Sandbox Code Playgroud)

我使用left_join和%>%跨模式1和跨模式(即模式1和模式2)中的表进行联接时遇到上述错误,当我使用copy = TRUE时,它会花费时间并给出警告:仅复制1,00,000条记录,并且真的很费时间。

我已经检查了 https://github.com/hadley/dplyr/issues/244, 但是pool方法似乎不起作用。任何帮助将不胜感激,否则学习dplyr将无助于实现我的近期目标。