首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dbplyr生成交叉连接查询

使用dbplyr生成交叉连接查询
EN

Stack Overflow用户
提问于 2019-07-16 16:40:00
回答 1查看 346关注 0票数 6

给定两个远程表(本例用tbl_lazy模拟)

代码语言:javascript
复制
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

请注意,我知道如何执行所有其他类型的联接,这正是关于交叉联接的。

我知道以下窍门:

代码语言:javascript
复制
joined <- t1 %>%
  mutate(tmp = 1) %>%
  full_join(mutate(t2, tmp = 1), by = "tmp") %>%
  select(-tmp)

然而,

  1. 这很难看(即使它可能隐藏在函数中)
  2. 我想利用DB高度优化的连接功能,所以我想传递一个真正的SQL CROSS JOIN。使用show_query(joined)显示生成的SQL查询使用LEFT JOIN

遗憾的是,在cross_join中没有dplyr操作符,sql_join(t1, t2, type = "cross")也不工作(不为tbl实现,只在DB连接上工作)。

如何使用dbplyr生成SQL CROSS JOIN

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-16 16:49:56

根据新闻档案的说法,自1.10版以来,如果使用full_join(..., by = character()),它将“促进”连接到交叉连接。这在其他地方似乎还没有文档化,但是搜索用于“交叉”的dbplyr Github回购时,代码和新闻文件都打开了它。

这种语法似乎不适用于本地数据帧,而仅通过SQL。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57061921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档