【发布时间】:2015-07-17 23:28:26
【问题描述】:
我正在分析来自 Redshift 数据库的数据,使用每个 dplyr 的连接在 R 中工作 - 有效:
my_db<-src_postgres(host='my-cluster-blahblah.redshift.amazonaws.com', port='5439', dbname='dev',user='me', password='mypw')
mytable <- tbl(my_db, "mytable")
viewstation<-mytable %>%
filter(stationname=="something")
当我尝试将该输出转换为数据框时,因此:
thisdata<-data.frame(viewstation)
我收到错误消息, 警告信息:
Only first 100,000 results retrieved. Use n = -1 to retrieve all.
我应该在哪里设置 n?
【问题讨论】:
-
注意,我确实希望将子集划分为少于 100000 个点,但我不能这样做:thisdata
-
更好的做法是使用 SELECT 查询中的 WHERE 子句对 Redshift 执行子集。它将防止通过网络进行不必要的数据传输并填满您机器的内存。
-
但我想要所有这些数据 :) 我想要所有这些数十万点。随机选择以减少数字只是一个好的次佳。如果可能的话,我宁愿呆在 dplyr 中——对于它工作的用例来说非常容易......
-
我知道您可以直接在从 rpostgresql 管理的查询中设置 n - 它是“获取”命令的参数。但是我怎样才能从 dplyr 得到呢?
标签: r dplyr amazon-redshift rpostgresql