我只知道如何使用RPostgreSQL和dplyr将R连接到Redshift。但我对以下几点感到困惑:
任何帮助表示感谢。
答案 0 :(得分:1)
您是否阅读过dplyr vignette on databases?你真的应该阅读更多细节。
您似乎混淆了R与数据库和代码执行之间的连接。连接允许R和数据库之间的通信 - R可以将SQL查询发送到数据库,数据库可以发回结果。没什么。
dplyr
尝试将一些R代码转换为SQL代码,以便SQL可以在数据库上执行,并且您无需自己编写SQL即可获得结果。正如插图所解释的那样,很少有可以翻译的R命令。主dplyr
动词有效,即select
,mutate
(虽然没有针对SQLite的分组数据框,但这可以用于postgres),group_by
,{{1 },summarize
,arrange
。基本的数学函数(引自插图):
- 基本数学运算符:
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
听起来也很合适。