Как выкладывать данные tbl_dbi и tbl_sql без загрузки в локальную память

Я работаю с большими наборами данных, и tidyr spread обычно выдает мне сообщения об ошибках, предлагающие failure to obtain memory выполнить операцию.

Поэтому я изучал dbplyr. Однако, как сказано здесь, а также показано ниже, dbplyr::spread() не работает .

Мой вопрос здесь в том, есть ли другой способ выполнить то, что делает tidyr::spread при работе с данными tbl_dbi и tbl_sql без загрузки в локальную память.

Используя примеры данных из здесь, ниже я представляю, что я получаю и что хотел бы нравится делать и получать.

#sample данных tbl_dbi и tbl_sql

df_sample <- tribble(~group1, ~group2, ~group3, ~identifier, ~value, 
                      8, 24, 6, 'mt_0', 
                      12, 18, 24, 6, 'mt_1', 4)

con <- DBI::dbConnect(RSQLite::SQLite(), "")
df_db <- copy_to(con, df_sample, 'df_sample')

#попытка распространения tbl_dbi и tbl_sql без загрузки в локальную память

//this does not work

df_db %>% spread(identifier, value)

Error in UseMethod("spread_") : 
  no applicable method for 'spread_' applied to an object of class "c('tbl_dbi', 'tbl_sql', 'tbl_lazy', 'tbl')"

#попытка распространения tbl_dbi и tbl_sql после загрузки в локальную память

//this spreads the data but the output is in memory
//I would like to keep the output as 'tbl_dbi', 'tbl_sql', and 'tbl_lazy'

df_db %<>% collect() %>% spread(identifier, value)

class(df_db)
[1] "tbl_df"     "tbl"        "data.frame"

Заранее благодарю за любую помощь


person Krantz    schedule 23.02.2019    source источник
comment
Не могли бы вы рассказать о вашем случае использования? Что содержат столбцы ключа и значения? Итерация по столбцам обычно может быть заменена групповой операцией с соответствующим полным набором данных, это должно хорошо работать в базе данных.   -  person krlmlr    schedule 13.03.2019
comment
Спасибо, @krlmlr. key=identifier, value=value. Нормальные данные. Просто большой. Не могли бы вы поделиться примером своих мыслей в качестве ответа?   -  person Krantz    schedule 14.03.2019
comment
Какие операции вы хотите выполнить с широким набором данных?   -  person krlmlr    schedule 14.03.2019
comment
@Krantz, ты нашел решение этой проблемы? Какой-нибудь способ распространения по базе данных еще?   -  person x85ms16    schedule 02.10.2019