使用 R dplyr 从 redshift 数据库中过滤 table
Filter table from redshift database using R dplyr
我在 AWS redshift 中保存了一个 table,它有很多行,我只想使用 "user_id" 列收集其中的一个子集。我正在尝试将 R 与 dplyr 库一起使用来完成此操作(见下文)。
conn_dplyr <- src_postgres('dev',
host = '****',
port = ****,
user = "****",
password = "****")
df <- tbl(conn_dplyr, "redshift_table")
但是,当我尝试对一组用户 ID 进行子集化时,它失败了(见下文)。有人可以帮助我了解如何通过一组用户 ID 元素收集数据 table 吗?个人电话工作,但当我将它们结合起来时,它失败了。在这种情况下,只有 2 个用户 ID,但通常可能有数百或数千个,所以我不想单独处理每一个。谢谢你的帮助。
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.
)
试试这个:
df_subset_both <- filter(df, user_id %in% c("2239257806", "22159960"))
您还可以在从 redshift 上传的查询中添加条件。
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)")
我在 AWS redshift 中保存了一个 table,它有很多行,我只想使用 "user_id" 列收集其中的一个子集。我正在尝试将 R 与 dplyr 库一起使用来完成此操作(见下文)。
conn_dplyr <- src_postgres('dev',
host = '****',
port = ****,
user = "****",
password = "****")
df <- tbl(conn_dplyr, "redshift_table")
但是,当我尝试对一组用户 ID 进行子集化时,它失败了(见下文)。有人可以帮助我了解如何通过一组用户 ID 元素收集数据 table 吗?个人电话工作,但当我将它们结合起来时,它失败了。在这种情况下,只有 2 个用户 ID,但通常可能有数百或数千个,所以我不想单独处理每一个。谢谢你的帮助。
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.
)
试试这个:
df_subset_both <- filter(df, user_id %in% c("2239257806", "22159960"))
您还可以在从 redshift 上传的查询中添加条件。
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)")