在 Redshift dplyr 操作中重命名汇总列

Posted

技术标签:

【中文标题】在 Redshift dplyr 操作中重命名汇总列【英文标题】:Renaming a Summarised Column inside Redshift dplyr operations 【发布时间】:2018-05-14 17:22:45 【问题描述】:

我正在使用 dplyr 在 Redshift 中执行某些操作,因此我不会将数据加载到内存中。

data <- tbl(conn, "customers") %>%
  filter(age >= 18)
subset <- data %>% 
  filter(eye_color != "brown") %>%
  group_by(gender, method, age, region) %>% 
  summarise(sum(purchases)) %>%  # will create a column called sum(purchases)
  full_join(data, by=c("region", "age", "method"))

现在,当我查看生成的数据框时,我会看到一个名为 sum(purchases) 的列,我想将其重命名为 purchases,这将在合并后创建列 purchase.xpurchase.y

到目前为止,我read 的大部分重命名都是处理内存中的数据帧,而不是使用 dbplyr 延迟评估的数据帧。我尝试过使用renamerename_rename_at 以及select 的不同变体。我也尝试过 here 和 here 制定的策略,但没有运气

有没有办法重命名sum(purchases)。我唯一的其他选择是在某个步骤将数据帧加载到内存中

data <- tbl(conn, "customers") %>%
  filter(age >= 18)
subset <- data %>% 
  filter(eye_color != "brown") %>%
  group_by(gender, method, age, region) %>% 
  summarise(sum(purchases)) %>% 
loaded <- as.data.frame(subset)
# do some join here but in memory and not in Redshift
# full_join(data, by=c("region", "age", "method"))

【问题讨论】:

【参考方案1】:

您可以在summarise 中指定名称。我没有您的数据,因此无法进行三次检查,但在调用summarise(n()) 之前,我已经在自己的代码中使用了它。比如……

summarise(your_column_name = sum(purchases))

你也可以给它一个带有空格的列名,你只需要使用反引号

summarise(`your column name` = sum(purchases))

【讨论】:

以上是关于在 Redshift dplyr 操作中重命名汇总列的主要内容,如果未能解决你的问题,请参考以下文章

R 在使用 dplyr 或 RPostgreSQL 的模式下访问 redshift 表

如何使用 R 和 dplyr 从 Redshift 检索超过 100000 行

如何在 MySQL 的一个原子操作中重命名两个表

使用 RPostgreSQL 和 dplyr 将 R 连接到 Redshift 的理论是啥

使用dplyr汇总多个列的不同操作

在 Gitkraken 中重命名分支?