使用R RODBC参数化SQL查询

橘7199

我有一个相当简单的问题。

每天,我使用RODBC包在R中执行数据分析。我使用SQL将其连接到我们的数据仓库并将其移至R环境

dbhandle <- odbcDriverConnect('driver={SQL Server};server=SQLSERVER;database=MYDATABASE;trusted_connection=true')

degrees <- sqlQuery(dbhandle, "select Inst, ID, DegreeDate, Degree from DEGREE where FY = ('2015') group by Inst, ID, DegreeDate, Degree order by Inst, ID, DegreeDate, Degree", as.is=TRUE)

您知道如何在MS Access中弹出一个窗口,询问您例如什么FY?您在2015年投入,您将获得该会计年度的所有费用。

有什么办法可以在R中做到吗?我在Stack Overflow上看到的参数查询问题涉及更改SQL数据库中的数据,对此我不感兴趣。我只想设置一些基本的限制,以便重新运行代码。

有人可能会想:“为什么不能只将5更改为6?” 这是一个公平的观点,但是我担心,由于查询更加复杂,用户可能会错过SQL查询中将5更改为6的部分,这会使分析混乱或减慢分析速度。

谢谢!沃克

MKA

您可以在开始时创建一个输入变量,并将其传递给查询。例如:

# Change your FY here
input_FY <- 2016

dbhandle <- odbcDriverConnect('driver={SQL Server};server=SQLSERVER;database=MYDATABASE;trusted_connection=true')

degrees <- sqlQuery(dbhandle, paste0("
select Inst, ID, DegreeDate, Degree 
from DEGREE 
where FY = ('", input_FY, "') 
group by Inst, ID, DegreeDate, Degree 
order by Inst, ID, DegreeDate, Degree"), 
as.is=TRUE)

因此,对于任何复杂的查询,您仍然可以传递相同的input_FY变量或在代码开始时声明的任何其他变量,以进行快速/轻松的更新。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章