dbplyr::collapse函数的用途

e4eetjau  于 2022-12-18  发布在  其他
关注(0)|答案(1)|浏览(114)

我不明白什么时候/为什么有人会使用dbplyr::collapse函数。
我知道它会创建一个子查询,但这在何处/何时是有益的?
R文档没有提供任何真实的的清晰度或示例。

j1dl9f46

j1dl9f461#

我认为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

相关问题