programing

R에서 데이터베이스 연결의 필터에서 문자 벡터를 사용하는 방법은 무엇입니까?

telecom 2023. 9. 2. 07:59
반응형

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)

좋은 의견이라도 있나?

언급URL : https://stackoverflow.com/questions/51397383/how-to-use-character-vector-in-filter-on-a-database-connection-in-r

반응형