从dbplyr中给定的SQL查询开始使用dbplyr

从dbplyr中给定的SQL查询开始使用dbplyr,sql,r,dplyr,dbplyr,Sql,R,Dplyr,Dbplyr,我有一个相当长且复杂的查询,我用它作为做一些分析的起点。我使用dbplyr从头开始复制了这一个,因此我可以使用dplyr谓词,而无需将数据库放入内存。如何在不必使用dbplyr复制起始查询的情况下实现这一点?查看答案。它显式地设置dbplyr表的SQL查询。您可以使用相同的想法: #读取包含现有查询的文件 开始查询=您最喜欢的方式读取文件(文件名) #创建连接 con=DBI::dbConnect(…) #初始表 my_table=tbl(con,sql(开始查询)) 要验证它是否按预期工作,

我有一个相当长且复杂的查询,我用它作为做一些分析的起点。我使用dbplyr从头开始复制了这一个,因此我可以使用dplyr谓词,而无需将数据库放入内存。如何在不必使用dbplyr复制起始查询的情况下实现这一点?

查看答案。它显式地设置dbplyr表的SQL查询。您可以使用相同的想法:

#读取包含现有查询的文件
开始查询=您最喜欢的方式读取文件(文件名)
#创建连接
con=DBI::dbConnect(…)
#初始表
my_table=tbl(con,sql(开始查询))
要验证它是否按预期工作,请尝试
show\u query(我的表)
head(我的表)


请注意,dbplyr不会将dplyr转换为高度优化的查询。因此,如果您的初始查询运行复杂/缓慢,那么通过dbplyr添加进一步的操作可能会执行得很差。在这种情况下,最好将复杂查询写入另一个表。

您是否在寻求一种将SQL自动转换为dplyr的方法(这样dbplyr就可以将其转换回SQL)?例如,“通过
dbplyr
添加进一步的操作可能会执行得很差。”的确如此!“将复杂查询写入另一个表”的一种方法是将
%%>%compute()
附加到创建
myu表的行末尾。