问题描述
将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应用于数据库连接或数据库表时应成功运行。
我该如何解决这个问题?
解决方法
如果您使用的是dbplyr
,而不是dbGetQuery
,则应该使用tbl()
。例如
querytest <- tbl(con,"schema.table")
test1 <- querytest %>%
filter(category != "NA") %>%
show_query()
具有连接的tbl
函数应返回{t1_sql}类,它是show_query()
正在寻找的对象。您可以检查class(querytest)