1

我正在尝试使用collect()函数 fromdplyr来查询comp_fleetSQLite 中的表 ()。以下代码有效:

Cposns <- tbl(db_con,"comp_fleet") %>% 
  arrange(mmsi, desc(timestamp))%>% 
  dplyr::filter(!is.na(lat)) %>% collect()

但是,当我尝试时top_n(),出现错误:

Cposns <- tbl(db_con,"comp_fleet") %>% 
  arrange(mmsi, desc(timestamp))%>% 
  dplyr::filter(!is.na(lat)) %>% 
  top_n(1,timestamp) %>% collect()

Error: Window function `rank()` is not supported by this database

由于这是一个巨大的表,我希望在收集之前在数据库中执行所有聚合功能。之前有没有使用该top_n()功能的方法collect()?或者等价的东西?

4

1 回答 1

1

感谢@Scarabee,这是有效的:

Cposns <- tbl(db_con,"comp_fleet") %>%
  arrange(mmsi, desc(timestamp))%>%
  dplyr::filter(!is.na(lat)) %>% group_by(mmsi) %>%
  do(head(., n = 1)) %>% collect()
于 2018-07-10T12:05:04.340 回答