Каков предпочтительный способ извлечь SQL из tbl_dbi в виде строки?

Я хотел бы извлечь SQL из tbl_dbi и сохранить его как символьный вектор.

я пытался

library(dplyr)
my_tbl_dbi <- tbl(conn, "myTable")

my_query <- capture.output(show_query(my_tbl_dbi), type = message) %>%
    paste0(collapse = " ")

Это работало для меня в прошлом, но сейчас не работает, возможно, потому что я играл с функцией снижения. У меня вопрос: есть ли более надежный / стандартный способ извлечения SQL-запроса из tbl_dbi или единственный способ сделать это - то, что я делаю?

1 ответ

Решение
as.character(db_sql_render(my_tbl_dbi$src$con, my_tbl_dbi))

Замечания:

methods("show_query")
## [1] show_query.tbl_lazy* show_query.tbl_sql* 

dbplyr:::show_query.tbl_sql
## function (x, ...) 
## {
##     message("<SQL>\n", db_sql_render(x$src$con, x))
##     invisible(x)
## }
## <environment: namespace:dbplyr>

Источник для db_sql_render.DBIConnection():

db_sql_render.DBIConnection <- function(con, sql, ...) {
  qry <- sql_build(sql, con = con, ...)
  sql_render(qry, con = con, ...)
} 
Другие вопросы по тегам