Использование tbl и src_monetdblite для доступа к данным
Извините, если этот вопрос был задан в другом месте, я не могу его найти. Я работаю над некоторыми основными примерами в MonetDBLite.
> dbGetQuery(dbcon, "SELECT MAX(mpg) FROM mtcars WHERE cyl = 8")
L3
1 19.2
работает, но
> ms <- MonetDBLite::src_monetdblite("./DB")
> t <- tbl(ms, "mtcars")
Error in UseMethod("tbl") :
no applicable method for 'tbl' applied to an object of class
"c('src_monetdb', 'src_sql', 'src')"
Кажется, что он пытается присвоить БД не таблице.
Любые предложения будут ценны.
Я просматривал ресурсы, нашел презентацию useR2016 и заметил здесь разницу:
> ms
src: MonetDBEmbeddedConnection
tbls: mtcars
Любопытно...
3 ответа
Я большой поклонник использования MonetDBLite
вместе с dplyr
, Мое дополнение к ответу Ханнеса Мюлейзена (спасибо за упаковку!) Состояло бы в том, что, похоже, порядок загрузки пакетов может иметь значение. загрузка MonetDBLite
после dplyr
а также dbplyr
кажется ключом для меня. загрузка MonetDBLite
Первый вызывает ошибки, подобные той, что отмечал nzgwynn.
Иногда я мог подключиться к базе данных без проблем. В других случаях я получаю сообщения об ошибках, такие как:
Ошибка в UseMethod("db_query_fields"): нет применимого метода для 'db_query_fields', примененного к объекту класса "MonetDBEmbeddedConnection"
Как и nzgwynn, я был озадачен, почему это иногда работает, но не для других. Перезапуск и переустановка не обязательно исправят это для меня.
Эта подсказка, из вопроса, поданного о sparklyr
, приведи меня, чтобы изучить порядок загрузки посылок:
https://github.com/rstudio/sparklyr/issues/38
Вроде отмечено там с sparklyr
и я заметил с другими пакетами базы данных R, MonetDBLite
будет загружаться и присоединяться автоматически, если глобальная среда уже содержит объект подключения. Моя проблема была в том, что у меня был src_monetdb
объект в моей рабочей области, который вызывал MonetDBLite
загрузить при запуске RStudio. Поэтому я думал, что загружаю его после dplyr
а также dbplyr
Это была действительно загрузка в первую очередь. Если я очищаю рабочее пространство и затем перезагружаюсь, я могу загрузить пакеты в предпочтительном порядке. Пока что этот метод сработал.
Я видел, что начинать с чистого рабочего пространства рекомендуется в качестве хорошей практики, например: https://twitter.com/hadleywickham/status/561146907519500288. Начиная с нового рабочего пространства, вы не теряете времени MonetDBLite
Быстрая возможность запроса.
Наконец, я бы добавил энтузиазм по поводу использования MonetDBLite. Я увидел, что это упомянуто на странице базы данных RStudio, и сразу же был впечатлен тем, насколько легко его настроить и насколько быстро. Это лучший способ, который я нашел для работы с набором данных ~2 ГБ в R. При интерактивном исследовании данных dplyr
запросы выполняются так быстро, что кажется, что я работаю с данными в памяти. И если все, что я хочу сделать, это загрузить весь набор данных в память, MonetDBLite
так же быстро или быстрее, чем другие методы, которые я пробовал, как read.fst()
от fst
пакет.
Я закрыл R и открыл его снова, и та же кодировка работала нормально...
Вам нужно позвонить library("dplyr")
Перед использованием tbl
и друзья. Также убедитесь, что у вас есть dbplyr
установлены.
Обновление: также, пожалуйста, убедитесь, что нет объекта подключения (src
) в сохраненном рабочем пространстве, загруженном при запуске. Загрузка соединений из файлов.Rdata не работает! Вместо этого создавайте соединение /src с нуля каждый раз, когда вы запускаете скрипт.