R - TBL / собирать иногда медленно - PullRequest
1 голос
/ 03 июля 2019

Я использую dplyr для получения данных из базы данных sql, и это обычно работает довольно хорошо.

Но иногда мой код работает очень медленно, и я не знаю почему.Большую часть времени я подключаюсь к таблицам с 1 миллионами строк, фильтрую некоторые данные и затем использую функцию сбора, подобную этой

flights <- tbl(
  getDbConn("flight_data"),
  in_schema(
    "flights",
    "usa")
  ) %>% 
  filter(destination == "east_coast") %>% 
  filter(city %in% c("NYC", "MIA") == F) %>% 
  filter(passanger_id %in% passangers$id) %>%
  select(city, passanger_id, date) %>%
  collect()

Загрузка данных из базы данных занимает всего несколько секунд.Но иногда мой код очень медленный, и я не знаю почему.Это может быть связано с тем, какие данные хранятся в базе данных, например, со временем.В этом случае загрузка данных с тем же кодом, что и выше, занимает 10 минут.

Все, что всегда работает быстро, это

flights <- tbl(
  getDbConn("flight_data"),
  in_schema(
    "flights",
    "other_table")
  ) %>%
  select(city, passanger_id, date)

Код выше выполняется несколько секунд.Но как только я использую собирать с этими данными, это медленно - 10 минут или больше.Мне интересно, есть ли быстрая альтернатива для сбора?Я попытался tbl_df, но это похоже медленно.

...