Как использовать символьный вектор в фильтре при подключении к базе данных в R?
РЕДАКТИРОВАТЬ: я нашел свою ошибку в примере ниже. Я сделал опечатку в stored_group
в фильтре. Работает как положено.
Я хочу использовать символьное значение для фильтрации таблицы базы данных. я использую dplyr
функционирует непосредственно на объекте соединения. Смотрите мои шаги ниже.
Я подключился к моей базе данных MariaDB:
con <- dbConnect(RMariaDB::MariaDB(),
dbname = mariadb.database,
user = mariadb.username,
password = mariadb.password,
host = mariadb.host,
port = mariadb.port)
Затем я хочу использовать фильтр для таблицы в базе данных, используя dplyr
код непосредственно на связи выше:
stored_group <- "some_group"
con %>%
tbl("Table") %>%
select(id, group) %>%
filter(group == stored_group) %>%
collect()
Я получил сообщение об ошибке Unknown column 'stored_group' in 'where clause'
, Так что я использовал show_query()
как это:
stored_group <- "some_group"
con %>%
tbl("Table") %>%
select(id, group) %>%
filter(group == stored_group) %>%
show_query()
И я получил:
<SQL>
SELECT `id`, `group`
FROM `Table`
WHERE (`group` = `stored_group`)
В переводе stored_group
рассматривается как имя столбца вместо значения в R. Как я могу предотвратить это?
На обычных data.frames в R это работает. Подобно:
stored_group <- "some_group"
data %>%
select(id, group) %>%
filter(group == stored_group)
Я только что проверил решение ниже, и оно работает. Но моя таблица базы данных будет расти. Я хочу фильтровать непосредственно в базе данных перед сбором.
stored_group <- "some_group"
con %>%
tbl("Table") %>%
select(id, group) %>%
collect() %>%
filter(group == stored_group)
Какие-либо предложения?