给定两个远程表(本例用tbl_lazy模拟)
library("dplyr")
library("dbplyr")
t1 <- tbl_lazy(df = iris, src = dbplyr::simulate_mysql())
t2 <- tbl_lazy(df = mtcars, src = dbplyr::simulate_mysql())如何使用t1 R和dbplyr在和之间执行实际的*交叉连接?
*即在翻译后的SQL查询中使用CROSS JOIN
请注意,我知道如何执行所有其他类型的联接,这正是关于交叉联接的。
我知道以下窍门:
joined <- t1 %>%
mutate(tmp = 1) %>%
full_join(mutate(t2, tmp = 1), by = "tmp") %>%
select(-tmp)然而,
CROSS JOIN。使用show_query(joined)显示生成的SQL查询使用LEFT JOIN。遗憾的是,在cross_join中没有dplyr操作符,sql_join(t1, t2, type = "cross")也不工作(不为tbl实现,只在DB连接上工作)。
如何使用dbplyr生成SQL CROSS JOIN?
发布于 2019-07-16 16:49:56
根据新闻档案的说法,自1.10版以来,如果使用full_join(..., by = character()),它将“促进”连接到交叉连接。这在其他地方似乎还没有文档化,但是搜索用于“交叉”的dbplyr Github回购时,代码和新闻文件都打开了它。
这种语法似乎不适用于本地数据帧,而仅通过SQL。
https://stackoverflow.com/questions/57061921
复制相似问题