Использование tbl и src_monetdblite для доступа к данным - PullRequest
0 голосов
/ 10 октября 2018

Извините, если этот вопрос был задан в другом месте, я не могу его найти.Я работаю с некоторыми базовыми примерами в 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 ]

0 голосов
/ 11 октября 2018

Я закрыл R и открыл его снова, и та же самая кодировка работала нормально ...

0 голосов
/ 14 ноября 2018

Я большой поклонник использования 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.

0 голосов
/ 11 октября 2018

Вам необходимо позвонить library("dplyr") перед использованием tbl и друзьями.Также убедитесь, что у вас установлено dbplyr.

Обновление: Кроме того, убедитесь, что в сохраненном рабочем пространстве, загруженном при запуске, нет объекта подключения (src).Загрузка соединений из файлов .Rdata не работает!Вместо этого создавайте соединение / src с нуля при каждом запуске сценария.

...