dplyr函数在数据库tbl上的执行是本地还是远程执行?

3
我一直在本地使用dplyr,发现它是一个非常强大的工具。在许多介绍性演讲中,展示了如何使用聚合函数summarize、mutate等只对所需数据进行操作,从而作用于数据库表格。我了解它如何将这些函数转换为SQL语句,但不太了解其他操作。
例如,如果我想将数据库表作为tbl来处理,并希望通过do()对管道结果运行glm等函数,那么glm是否会以某种方式被传输到数据库中执行,或者必须下载数据(以任何简化形式),然后在本地运行glm?
根据所涉及的表格大小,这是一个重要的区别。谢谢!

你读过数据库vignette了吗? - joran
1
是的,与大多数教程一样,它侧重于连接和聚合,而不是对结果进行任意计算。它确实指出数学函数(例如atanh)会按照数据库支持它们的方式传递,但并未解决任意R函数的问题。 - Patrick McCarthy
1
我想我感到困惑,因为SQL数据库通常不能以某种方式适应任意的R模型。(某些数据库中有一些R嵌入,但我不认为dplyr与它们交互。)而那个vignette的懒惰部分涵盖了我期望数据库执行的所有操作。所以简短的答案是不,你不能只使用dplyr在数据库中拟合模型。 - joran
我之所以问这个问题是因为我正在考虑编写针对IBM Netezza数据库的连接器,它已经提供了一种在其高级分析功能之一中运行R代码的方法。如果这个功能不存在(我同意,我不会指望它存在于任意的mysql或其他数据库中),那么连接dplyr对我没有任何好处,也就不必费心了。 - Patrick McCarthy
1个回答

2
任何R分析,调用glm(),都在本地运行。正如@joran在上面评论的那样,数据库文档入门文档开发信息以及您可以找到的许多有关使用dplyr的信息对于学习如何将某些操作转换为SQL并在DB系统上执行非常有用。我相信,当完成DB-capable操作更有效时,通过在一系列操作中引入特定于R的分析,可能会导致某些瓶颈问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接