r - dbplyr::collapse 函数的用途

标签 r dplyr dbplyr

我不明白何时/为什么有人会使用 dbplyr::collapse 函数。

我知道它会创建一个子查询,但是这在哪里/什么时候会有好处?

R 文档没有提供任何真正的清晰度或示例。

最佳答案

我认为 dbplyr::collapse() 强制对子查询进行中间 SQL 查询渲染。

这是一个例子:

library(dplyr)
library(dbplyr)

db <- memdb_frame(a = c(3, 4, 1, 2), b = c(5, 1, 2, NA))


# No subquery
db %>% 
  mutate(a = 2 * b) %>% 
  # collapse() %>%
  arrange(a) %>%
  show_query()
#> <SQL>
#> SELECT 2.0 * `b` AS `a`, `b`
#> FROM `dbplyr_001`
#> ORDER BY `a`

# Intermediate sql used as subquery
db %>% 
  mutate(a = 2 * b) %>% 
  collapse() %>%
  arrange(a) %>%
  show_query()
#> <SQL>
#> SELECT *
#> FROM (
#> SELECT 2.0 * `b` AS `a`, `b`
#> FROM `dbplyr_001`
#> )
#> ORDER BY `a`

创建于 2022 年 12 月 2 日 reprex v2.0.2

关于r - dbplyr::collapse 函数的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74659105/

相关文章:

r - 将向量传递到 all() 以测试相等性

r - 如何加快 dbconnect 数据库的collect()速度

不同用户的滚动计数

r - Mutate 函数将值向下舍入,为什么?

r - 在 dplyr tidyverse 中按组对不同行数进行采样

将数字序列舍入到所选数字

R - describe() 输出到数据框

r - 如何在每个组内创建滞后变量?

r - 如何仅 rbind 两个数据集的公共(public)列

r 计算每个变量每个 ID 的非缺失条目数