如何使用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)
将 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)