编辑:我在下面的例子中发现了我的错误。我打错了
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`)
在翻译中,
存储组
在R中被视为列名而不是值。如何防止这种情况?
对于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)
有什么建议吗?