Вы читали виньетку dplyr по базам данных? Вы действительно должны прочитать это для более подробной информации.
Кажется, вы путаете связь между R и базой данных и выполнением кода. Соединение обеспечивает связь между R и базой данных — R может отправлять SQL-запросы в базу данных, а база данных может отправлять результаты обратно. Больше ничего.
dplyr
пытается преобразовать некоторый код R в код SQL, чтобы SQL мог выполняться в базе данных, и вы получали результаты без необходимости писать SQL самостоятельно. Как поясняет виньетка, очень мало команд R имеют доступный перевод. Работают основные глаголы dplyr
, т. е. select
, mutate
(правда, не с сгруппированными фреймами данных для SQLite, однако это доступно с postgres), group_by
, summarize
, arrange
, filter
. Также основные математические функции (цитата из виньетки):
- основные математические операторы:
+, -, *, /, %%, ^
- математические функции:
abs, acos, acosh, asin, asinh, atan, atan2, atanh, ceiling, cos, cosh, cot, coth, exp, floor, log, log10, round, sign, sin, sinh, sqrt, tan, tanh
- логические сравнения:
<, <=, !=, >=, >, ==, %in%
- логические операции:
&, &&, |, ||, !, xor
- основные агрегаты:
mean, sum, min, max, sd, var
Что-нибудь еще, и вы будете извлекать данные в R и запускать на них команду R. В случае head()
, которого нет в списке, вы, вероятно, перетаскиваете всю таблицу в R, а затем просматриваете первые 6 строк.
Для Redshift это будет особенно медленно для широкой таблицы — Redshift использует столбцовое хранилище, поэтому получение только тех столбцов, которые вам нужны, дает значительные преимущества в производительности.
Кроме того, как объясняется в виньетке, dplyr
будет откладывать оценку SQL на максимально возможное время, что повышает эффективность. Предполагаемый способ принести результаты в R — collect
, но ваш as_data_frame
звучит так, как будто он тоже работает.
person
Gregor Thomas
schedule
11.10.2016