Рассмотрим следующий SQL:dplyr SQL присоединяется
SELECT D.product_name
FROM business.payment P
LEFT JOIN dim.product_name D
ON D.product_id = P.product_id
Запрос возвращает список product_names, которые находятся в таблице выплат и делает это на основе объединения.
Как можно было бы воспроизвести что-то подобное в dplyr, не вдаваясь в память? Я работаю с подключением к базе данных.
Я попытался следующие, но безрезультатно:
product_name <-
business %>%
tbl('dim_product')
business %>%
tbl('payment') %>%
left_join(product_name, by = 'product_id') %>%
select(product_name) %>%
collect()
Я искал довольно большой, и никто, кажется, не обратился к этому.
Спасибо!
R хранит все объекты в памяти. Поэтому, если вы используете 'dplyr', вы используете его на объектах и, следовательно, в памяти. Сказав это, вы можете использовать произвольный SQL в 'dplyr', например. 'tbl (my_db_extract_now_in_memory, sql (« SELECT * FROM flight »))', но это всегда будет в памяти. –
Я пытаюсь сделать это строго с помощью dplyr. Лень не должна приводить их в память до триггеров 'collect(). –
Выполнение всего этого в 'dplyr' - это не проблема, но я просто говорю, что он будет в памяти после его извлечения. Обратите внимание, что это ничем не отличается от запроса DB через R с помощью любых других средств, таких как 'RODBC'. Единственный способ, которым он не был в памяти, - это использовать «RPostgres» или «RODBC» и т. Д. Для отправки SQL-запроса и просто использовать его для создания новой таблицы * в базе данных * и никогда не экспортировал данные в R –