sql - dplyr sql连接

标签 sql r dplyr

考虑以下 SQL:

    SELECT D.product_name
      FROM business.payment P
 LEFT JOIN dim.product_name D 
        ON D.product_id = P.product_id

查询返回付款表中的 product_names 列表,并基于联接执行此操作。

如何在不拉入内存的情况下在 dplyr 中复制这样的东西?我正在使用数据库连接。

我尝试了以下方法,但无济于事:

product_name <- 
  business %>% 
  tbl('dim_product') 

business %>% 
  tbl('payment') %>% 
  left_join(product_name, by = 'product_id') %>% 
  select(product_name) %>% 
  collect()

我搜索了很多,似乎没有人解决这个问题。

谢谢!

最佳答案

这是事后的一段时间,但也许您仍在寻找或好奇基于 dplyr 动词的选项。我正在为我的工作处理同一个问题,并遇到了你(某种)未回答的问题。当我使用 DBIodbc 包针对 MSSQL 数据库运行它时,下面对我有用。

我在加入之前从表中选择了感兴趣的列,因为这通常是查询数据库时的最佳做法。 dplyr 连接函数默认会进行自然连接,因此您可能不必显式提供 by 参数。

db_con <- DBI::dbConnect(
  drv = odbc::odbc(),
  dsn = <data source name>
)

db_con %>%
  tbl("table1") %>%
  select(col1, col2, col3) %>%
  left_join(
    db_con %>% tbl("table2") %>% select(col3,  col4, col5)
  )

关于sql - dplyr sql连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864427/

相关文章:

PHP 需要引号才能使用 SQL Server 数据库中的 "Transaction"表

c# - 如何将 LINQ to SQL 查询结果添加到 Observable Collection?

r - 压缩数据框

r - 使用 Apache 2.4 在 Shiny 服务器中代理 Web 套接字

r - 重新探究data.table与dplyr的内存使用

mysql - SQL查询多个日期到一个日期

android - 如何将 query() 与 WHERE 子句一起使用?

r - 将大型(3.9 磨机 obs)data.frames 导出到文本文件的最有效方法?

r - 将列中的独特特征转换为变量名称并将原始特征虚拟编码为 R 中的变量

R dplyr - 同一列,获取数据帧以下两行的总和