什么是使用RPostgreSQL和dplyr将R连接到Redshift的理论

时间:2016-10-11 22:45:48

标签: r dplyr amazon-redshift rpostgresql

我只知道如何使用RPostgreSQL和dplyr将R连接到Redshift。但我对以下几点感到困惑:

  1. 当我想在屏幕上显示时,就像头部(a),其中a是从Redshift检索的结果,它会非常慢。但是,如果我只挑选了几个字段,让我们说只有4列,那么速度要快得多。那么R如何连接Redshift?
  2. 如果我想使用某些模型,例如Random forest或generalized linear,有必要使用as.data.frame将结果传输到本地计算机上的数据框吗?我试过了。在使用ggplot2绘制图表之前,我必须这样做。
  3. 任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

您是否阅读过dplyr vignette on databases?你真的应该阅读更多细节。

您似乎混淆了R与数据库和代码执行之间的连接。连接允许R和数据库之间的通信 - R可以将SQL查询发送到数据库,数据库可以发回结果。没什么。

dplyr尝试将一些R代码转换为SQL代码,以便SQL可以在数据库上执行,并且您无需自己编写SQL即可获得结果。正如插图所解释的那样,很少有可以翻译的R命令。主dplyr动词有效,即selectmutate(虽然没有针对SQLite的分组数据框,但这可以用于postgres),group_by,{{1 },summarizearrange。基本的数学函数(引自插图):

  
      
  • 基本数学运算符:filter
  •   
  • 数学函数:+, -, *, /, %%, ^
  •   
  • 逻辑比较:abs, acos, acosh, asin, asinh, atan, atan2, atanh, ceiling, cos, cosh, cot, coth, exp, floor, log, log10, round, sign, sin, sinh, sqrt, tan, tanh
  •   
  • 布尔操作:<, <=, !=, >=, >, ==, %in%
  •   
  • 基本汇总:&, &&, |, ||, !, xor
  •   

其他任何内容,您将数据拉入R并在其上运行R命令。如果mean, sum, min, max, sd, var不在列表中,则可能将整个表拉入R,然后查看前6行。

对于Redshift,这对于宽表来说速度特别慢 - Redshift使用柱状存储,因此只需拉动所需的列就可以获得强大的性能优势。

另外,正如插图中所解释的那样,head()将尽可能地推迟SQL评估,从而提高效率。将结果带到R的预期方式是dplyr,但您的collect听起来也很合适。