r - 如何在 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 中的值。如何防止这种情况发生?
在 R 中的普通 data.frames 上,这是可行的。喜欢:
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)
有什么建议么?
解决方案
推荐阅读
- swift - UIBezierPath - draw multiple rects for a single path
- sql - SQL - Find the horses that have run at ONLY 1 specific track
- python - Cannot increase accuracy of calculation (not enough decimal spaces)
- python-3.x - 从不和谐消息中提取不和谐用户 ID
- c# - c#避免多个MessageBox显示?
- spring-boot - 为 POST 的 HTTP 路径“http://localhost:8080/error”映射的模糊处理程序方法
- mongodb - 单个组的 Mongodb 查询限制
- php - 尽管设置了 max_execution_time,PHP 仍以 30 秒切割
- python - 从终端中正在进行的进程中读取命令行输出
- python - 重塑 Numpy 数组:“列表”对象不可调用