Size: a a a

R (язык программирования)

2021 March 02

ДВ

Дмитрий Володин... in R (язык программирования)
Philipp Upravitelev
сколько идентификаторов-то? чтобы бд положить %)
Да, тут кажется, что и если в IN их запихать, тоже можно положить в таком случае)
источник

М

Марк in R (язык программирования)
Philipp Upravitelev
сколько идентификаторов-то? чтобы бд положить %)
Так если же даже написать запрос с with, то sql ide выдает только первые 300 записей. Если их увеличивать насильно, то начинает ругаться.
источник

М

Марк in R (язык программирования)
Дмитрий Володин
Да, тут кажется, что и если в IN их запихать, тоже можно положить в таком случае)
ну да ладно, даже 500 к записей, если они по индексу - нормально все)
источник

М

Марк in R (язык программирования)
Philipp Upravitelev
сколько идентификаторов-то? чтобы бд положить %)
Ну мне как то админ говорил, что если дата сет большой, то забудь про with
источник

М

Марк in R (язык программирования)
И сам with когда датасет не большой, но надо несколько раз одно и тоже вычисление делать, поэтому почему бы и не положить его в память
источник

PU

Philipp Upravitelev in R (язык программирования)
не понимать, если честно. ну да ладно.
источник

М

Марк in R (язык программирования)
Philipp Upravitelev
не понимать, если честно. ну да ладно.
ну, может я не прав на самом деле. Спасибо за совет с glue. Попробую тоже)
источник

М

Марк in R (язык программирования)
Philipp Upravitelev
не понимать, если честно. ну да ладно.
Ну и за ваши вебинары по data table, конечно же, спасибо)) Наконец то перешел на него с dplyr :)
источник

IS

Ivan Struzhkov in R (язык программирования)
Марк
Никто не сталкивался с такой проблемой, что нужно выгрузить из базы данных в R некий датасет, где  в блоке WHERE одна из колонок будет указана через IN, и в нем несколько сотен или тысяч значений. Ну например надо вытянуть несколько тыс определенных клиентов по их id.

И вот у меня в R загружена таблица с вектором id этих клиентов. И можно ли как то подставить этот вектор, либо в запрос в R, либо в транслятор sql в dbplyr? Таким образом он отказывается это делать ((

clients <- tbl(bd, "clients") %>%
 filter (client_id %in% from_1C$customer_id) %>%
 select(2, 8, 9, 10) %>% show_query()
Когда то для себя писал функцию.
Вектор со значениями (из дата сета можно достать через pull())
приводит в вид ('xxx','yyy','zzz')

u_string<-function(x){
 x %>% paste0("'",.,"'") %>% toString() %>% paste('(',.,')')
}

после этого можно прям

xx %>% u_string()->z1
dbGetQuery(connetion,paste0(
"select *
from table
where zz in",z1)
)
источник

IS

Ivan Struzhkov in R (язык программирования)
Могут быть ограничения в базе данных на количестве значений допустимых в in
В постгрю у меня так мегабайты влезали, а в оракл больше 1000 не дал, но не знаю это настройки или чего
источник

М

Марк in R (язык программирования)
Ivan Struzhkov
Когда то для себя писал функцию.
Вектор со значениями (из дата сета можно достать через pull())
приводит в вид ('xxx','yyy','zzz')

u_string<-function(x){
 x %>% paste0("'",.,"'") %>% toString() %>% paste('(',.,')')
}

после этого можно прям

xx %>% u_string()->z1
dbGetQuery(connetion,paste0(
"select *
from table
where zz in",z1)
)
спасибо, тоже поразмышляю над этим)
источник

IS

Ivan Struzhkov in R (язык программирования)
Марк
спасибо, тоже поразмышляю над этим)
да не за что, можно просто пользоваться - смысл как выше подметили такой же, SQL запрос с точки зрения R  - тупо текстовая стринга, все методы процедурной генерации текста - работают
источник

М

Марк in R (язык программирования)
Ivan Struzhkov
да не за что, можно просто пользоваться - смысл как выше подметили такой же, SQL запрос с точки зрения R  - тупо текстовая стринга, все методы процедурной генерации текста - работают
Да я собственно поэтому и очень удивился, когда dbplyr не 'съел' извлеченный вектор из data table фрейма. Отдельно поместил его в текстовый вектор - все заработало
источник

PU

Philipp Upravitelev in R (язык программирования)
Марк
Ну и за ваши вебинары по data table, конечно же, спасибо)) Наконец то перешел на него с dplyr :)
welcome к нашему огоньку %)
источник

IS

Ivan Struzhkov in R (язык программирования)
Марк
Да я собственно поэтому и очень удивился, когда dbplyr не 'съел' извлеченный вектор из data table фрейма. Отдельно поместил его в текстовый вектор - все заработало
В приведенном примере - ты не извлек вектор, ты сделал датафрейм с одним полем. Соотвествено и на то что это объект - и ругались все
источник

М

Марк in R (язык программирования)
Ivan Struzhkov
В приведенном примере - ты не извлек вектор, ты сделал датафрейм с одним полем. Соотвествено и на то что это объект - и ругались все
через $ же из дата фрейма извлекается именно вектор?
источник

PU

Philipp Upravitelev in R (язык программирования)
Марк
через $ же из дата фрейма извлекается именно вектор?
да
источник

PU

Philipp Upravitelev in R (язык программирования)
если там вектор был в колонке, а не список списков %)
источник

БА

Байкулов Антон... in R (язык программирования)
Марк
Да вы просто лучший) Короче, вытащил этот столбец из data table фрейма и положил его просто в вектор. И сработало!!))
А можно пример записи в R c IN в query запросе? Как правильно вставить вектор, чтобы значения через , шли.
источник

IS

Ivan Struzhkov in R (язык программирования)
Марк
через $ же из дата фрейма извлекается именно вектор?
Я ориентировался на код выше.

давай repex разберем
источник