2016-05-09 2 views
0

У меня есть таблица, сохраненная в красном смещении AWS, в которой много строк, и я хочу собрать только их подмножество, используя столбец «user_id». Я пытаюсь использовать R с библиотекой dplyr, чтобы выполнить это (см. Ниже).Таблица фильтров из базы данных redshift с использованием R dplyr

conn_dplyr <- src_postgres('dev', 
         host = '****', 
         port = ****, 
         user = "****", 
         password = "****") 
df <- tbl(conn_dplyr, "redshift_table") 

Однако, когда я пытаюсь подмножество над набором идентификаторов пользователей, оно не работает (см. Ниже). Может ли кто-нибудь помочь мне понять, как я мог бы собирать таблицу данных по набору элементов идентификатора пользователя? Индивидуальные звонки работают, но когда я их совмещаю, он терпит неудачу. В этом случае есть только 2 идентификатора пользователя, но в целом это могут быть сотни или тысячи, поэтому я не хочу делать каждый отдельно. Спасибо за вашу помощь.

df_subset1 <- filter(df, user_id=="2239257806") 
df_subset1 <- collect(df_subset1) 

df_subset2 <- filter(df, user_id=="22159960") 
df_subset2 <- collect(df_subset2) 

df_subset_both <- filter(df, user_id==c("2239257806", "22159960")) 
df_subset_both <- collect(df_subset_both) 

Error in postgresqlExecStatement(conn, statement, ...) : 
RS-DBI driver: (could not Retrieve the result : ERROR: operator does not  exist: character varying = record 
HINT: No operator matches the given name and argument type(s). You may need to add explicit type casts. 
) 

ответ

2

Попробуйте это:

df_subset_both <- filter(df, user_id %in% c("2239257806", "22159960")) 
0

Также вы можете добавить условие в запросе загруженного из красного смещения.

install.packages("RPostgreSQL") 
    library(RPostgreSQL) 
    drv <- dbDriver("PostgreSQL") 
    conn <-dbConnect(drv,host='host link',port='5439',dbname='dbname',user='xxx',password='yyy') 
    df_subset_both <- dbSendQuery(conn,"select * from my_table where user_id in (2239257806,22159960)") 
Смежные вопросы