我正在分析来自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?
答案 0 :(得分:7)
而不是使用
thisdata<-data.frame(viewstation)
使用
thisdata <- collect(viewstation)
collect()会将数据库中的所有数据拉回R.如DPLYR :: databases中所提到的:
使用数据库时,dplyr会尽可能地懒惰。它在两个方面很懒惰:
除非您明确要求,否则它永远不会将数据拉回R.
在最后一分钟之前,它会延迟完成任何工作,收集您想要做的所有事情,然后一步将其发送到数据库。
答案 1 :(得分:0)
参数n
是collect
函数的一部分。
my_db<-src_postgres(host='my-cluster-blahblah.redshift.amazonaws.com', port='5439', dbname='dev',user='me', password='mypw')
mytable <- tbl(my_db, "mytable") %>% collect(n = Inf)
这样可以超过100.000行。