С помощью dbConnect было установлено несколько соединений с базами данных SQL (например, DB1 и DB2). Как написать запрос, который включает таблицы из DB1 и DB2? Позволяет ли dbGetQuery запрашивать только одну БД? Можно ли использовать пакет sqldf после соединений БД?Запрос на несколько таблиц с использованием dbGetQuery пакета RMySQL
ответ
Это не тот ответ, который вы ищете, но у меня была та же проблема.
Вкратце, я бы отказался от идеи делать какие-либо объединения/группировки/подзапросы между таблицами в 1 (или более) БД в SQL. С новыми большими пакетами данных в R, в частности с dplyr или data.table, практически нет необходимости. Единственное исключение, которое я могу думать о том, где SQL быстрее, - это когда ваши результаты запроса достаточно велики, чтобы занять слишком много ОЗУ.
Интересный прецедент для меня следующий: Мои таблицы, поступающие из базы данных MPP, составляют около 20B строк. Задача: Запросить полный набор результатов из 2M строк и использовать dplyr :: group_by() для группировки по 3 переменным или просто выполнить GROUP BY в SQL, чтобы вернуть окончательный результат из 100k строк.
С точки зрения времени, всегда существует переломная точка, где R или SQL быстрее, и за исключением, возможно, объединения в таблицу размеров в MySQL, R почти всегда быстрее для всего. (Мой пример находится на переломном моменте для моего оборудования.)
С dplyr, который прост в использовании как SQL, я не уверен, что нам нужно задать этот вопрос больше.
Итак, вы говорите: «Потяните обе таблицы в R, используйте« dplyr »или whathaveyou, чтобы сделать эквивалент соединения SQL»? –