如何使用show_query?返回 "no applicable method"

How to use show_query? Returning "no applicable method"

将 RStudio 连接到 Amazon Athena 后,我试图深入了解使用 show_query 提取 SQL 语句。在我尝试使用此功能之前,代码 运行 一直很顺利。

library(tidyverse)
library(dplyr)
library(dbplyr)
library(odbc)
library(DBI)
library(rJava)

con <- dbConnect(noctua::athena(),
                 aws_access_key_id = "***",
                 aws_secret_access_key = "***",
                 s3_staging_dir = "s3://bucket-folder/",
                 region_name = 'region_name')

querytest <- dbGetQuery(con, "SELECT * FROM schema.table") 
test1 <- querytest %>% 
  filter(category != "NA") %>% 
  show_query()

Error in UseMethod("show_query") : 
  no applicable method for 'show_query' applied to an object of class "c('data.table', 'data.frame')" 

querytest <- dbGetQuery(con, "SELECT * FROM schema.table")
test2 <- querytest %>% 
  filter(category != "NA") %>% 
  remote_query()

Error in UseMethod("db_sql_render") : 
  no applicable method for 'db_sql_render' applied to an object of class "NULL"

show_query 或 remote_query 运行 均未成功。

据我了解,show_query 应用于数据库连接或数据库 table 时应该 运行 成功。

我该如何解决这个问题?

如果您使用 dbplyr,而不是 dbGetQuery,您应该使用 tbl()。例如

querytest <- tbl(con, "schema.table")
test1 <- querytest %>% 
  filter(category != "NA") %>% 
  show_query()

具有连接的 tbl 函数应该 return 具有 class “tbl_sql” 的对象,这正是 show_query() 正在寻找的对象。您可以查看 class(querytest)