我不明白何时/为什么有人会使用 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/