如何使用show_query?返回“无适用方法”

问题描述

将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)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...