請看下面的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',你就在對象上,因此在內存中使用它。話雖如此,你可以在'dplyr'中使用任意的SQL,例如'tbl(my_db_extract_now_in_memory,sql(「SELECT * FROM flights」))'但它總是在內存中。 –
我試圖嚴格使用dplyr來做到這一點。在collect()觸發之前,懶惰不應該將它們帶入內存。 –
在'dplyr'中這樣做是沒有問題的,但我只是說它一旦被提取就會在內存中。請注意,這是沒有什麼不同的,然後通過任何其他方式通過R查詢數據庫,例如'RODBC'。它不會在內存中的一種方式是,如果你使用'RPostgres'或'RODBC'等發送一個SQL查詢,並用它在數據庫*中創建一個新表*並且從不將數據導出到R –