【发布时间】:2022-12-03 13:56:44
【问题描述】:
我不明白什么时候/为什么有人会使用 dbplyr::collapse 函数。
我知道它会创建一个子查询,但这在什么时候/什么时候会有用?
R 文档没有提供任何真正的清晰度或示例。
【问题讨论】:
-
您是否通读了所有文档? dplyr.tidyverse.org/reference/compute.html
我不明白什么时候/为什么有人会使用 dbplyr::collapse 函数。
我知道它会创建一个子查询,但这在什么时候/什么时候会有用?
R 文档没有提供任何真正的清晰度或示例。
【问题讨论】:
我认为 dbplyr::collpase() 强制为子查询呈现中间 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-02 reprex v2.0.2
【讨论】: