mirror of https://git.sr.ht/~hrbrmstr/metis
boB Rudis
5 years ago
12 changed files with 129 additions and 52 deletions
@ -1,26 +0,0 @@ |
|||||
.aws_bin <- function() { |
|
||||
unname(Sys.which('aws')) |
|
||||
} |
|
||||
|
|
||||
.athenacli <- function(...) { |
|
||||
|
|
||||
args <- c("athena") |
|
||||
|
|
||||
in_args <- list(...) |
|
||||
if (length(in_args) == 0) in_args <- "help" |
|
||||
|
|
||||
args <- c(args, unlist(in_args, use.names=FALSE)) |
|
||||
|
|
||||
res <- sys::exec_internal(.aws_bin(), args = args, error = FALSE) |
|
||||
|
|
||||
if (length(res$stdout) > 0) { |
|
||||
|
|
||||
out <- rawToChar(res$stdout) |
|
||||
|
|
||||
if ("help" %in% args) cat(out, sep="") |
|
||||
|
|
||||
invisible(out) |
|
||||
|
|
||||
} |
|
||||
|
|
||||
} |
|
@ -1,13 +0,0 @@ |
|||||
list_query_executions <- function(max_items=10, starting_token=NULL, page_size=NULL) { |
|
||||
|
|
||||
|
|
||||
args <- c("list-query-executions", sprintf("--max-items=%s", as.integer(max_items))) |
|
||||
|
|
||||
if (!is.null(starting_token)) args <- c(args, sprintf("--starting-token=%s", starting_token)) |
|
||||
if (!is.null(page_size)) args <- c(args, sprintf("--page-size=%s", as.integer(page_size))) |
|
||||
|
|
||||
res <- .athenacli(args) |
|
||||
|
|
||||
jsonlite::fromJSON() |
|
||||
|
|
||||
} |
|
@ -0,0 +1,101 @@ |
|||||
|
#' @rdname Athena |
||||
|
#' @keywords internal |
||||
|
#' @export |
||||
|
sql_translate_env.AthenaConnection <- function(con) { |
||||
|
|
||||
|
x <- con |
||||
|
|
||||
|
dbplyr::sql_variant( |
||||
|
|
||||
|
scalar = dbplyr::sql_translator( |
||||
|
.parent = dbplyr::base_scalar, |
||||
|
`!=` = dbplyr::sql_infix("<>"), |
||||
|
as.integer64 = function(x) dbplyr::build_sql("CAST(", x, "AS BIGINT)"), |
||||
|
as.numeric = function(x) dbplyr::build_sql("CAST(", x, " AS DOUBLE)"), |
||||
|
as.character = function(x) dbplyr::build_sql("CAST(", x, " AS CHARACTER)"), |
||||
|
as.date = function(x) dbplyr::build_sql("CAST(", x, " AS DATE)"), |
||||
|
as.Date = function(x) dbplyr::build_sql("CAST(", x, " AS DATE)"), |
||||
|
as.POSIXct = function(x) dbplyr::build_sql("CAST(", x, " AS TIMESTAMP)"), |
||||
|
as.posixct = function(x) dbplyr::build_sql("CAST(", x, " AS TIMESTAMP)"), |
||||
|
as.logical = function(x) dbplyr::build_sql("CAST(", x, " AS BOOLEAN)"), |
||||
|
date_part = function(x, y) dbplyr::build_sql("DATE_PART(", x, ",", y ,")"), |
||||
|
grepl = function(x, y) dbplyr::build_sql("CONTAINS(", y, ", ", x, ")"), |
||||
|
gsub = function(x, y, z) dbplyr::build_sql("REGEXP_REPLACE(", z, ", ", x, ",", y ,")"), |
||||
|
trimws = function(x) dbplyr::build_sql("TRIM(both ' ' FROM ", x, ")"), |
||||
|
cbrt = dbplyr::sql_prefix("CBRT", 1), |
||||
|
degrees = dbplyr::sql_prefix("DEGREES", 1), |
||||
|
e = dbplyr::sql_prefix("E", 0), |
||||
|
row_number = dbplyr::sql_prefix("row_number", 0), |
||||
|
lshift = dbplyr::sql_prefix("LSHIFT", 2), |
||||
|
mod = dbplyr::sql_prefix("MOD", 2), |
||||
|
age = dbplyr::sql_prefix("AGE", 1), |
||||
|
negative = dbplyr::sql_prefix("NEGATIVE", 1), |
||||
|
pi = dbplyr::sql_prefix("PI", 0), |
||||
|
pow = dbplyr::sql_prefix("POW", 2), |
||||
|
radians = dbplyr::sql_prefix("RADIANS", 1), |
||||
|
rand = dbplyr::sql_prefix("RAND", 0), |
||||
|
rshift = dbplyr::sql_prefix("RSHIFT", 2), |
||||
|
trunc = dbplyr::sql_prefix("TRUNC", 2), |
||||
|
contains = dbplyr::sql_prefix("CONTAINS", 2), |
||||
|
convert_to = dbplyr::sql_prefix("CONVERT_TO", 2), |
||||
|
convert_from = dbplyr::sql_prefix("CONVERT_FROM", 2), |
||||
|
string_binary = dbplyr::sql_prefix("STRING_BINARY", 1), |
||||
|
binary_string = dbplyr::sql_prefix("BINARY_STRING", 1), |
||||
|
to_char = dbplyr::sql_prefix("TO_CHAR", 2), |
||||
|
to_date = dbplyr::sql_prefix("TO_DATE", 2), |
||||
|
to_number = dbplyr::sql_prefix("TO_NUMBER", 2), |
||||
|
char_to_timestamp = dbplyr::sql_prefix("TO_TIMESTAMP", 2), |
||||
|
double_to_timestamp = dbplyr::sql_prefix("TO_TIMESTAMP", 1), |
||||
|
char_length = dbplyr::sql_prefix("CHAR_LENGTH", 1), |
||||
|
flatten = dbplyr::sql_prefix("FLATTEN", 1), |
||||
|
kvgen = dbplyr::sql_prefix("KVGEN", 1), |
||||
|
repeated_count = dbplyr::sql_prefix("REPEATED_COUNT", 1), |
||||
|
repeated_contains = dbplyr::sql_prefix("REPEATED_CONTAINS", 2), |
||||
|
ilike = dbplyr::sql_prefix("ILIKE", 2), |
||||
|
init_cap = dbplyr::sql_prefix("INIT_CAP", 1), |
||||
|
length = dbplyr::sql_prefix("LENGTH", 1), |
||||
|
lower = dbplyr::sql_prefix("LOWER", 1), |
||||
|
tolower = dbplyr::sql_prefix("LOWER", 1), |
||||
|
ltrim = dbplyr::sql_prefix("LTRIM", 2), |
||||
|
nullif = dbplyr::sql_prefix("NULLIF", 2), |
||||
|
position = function(x, y) dbplyr::build_sql("POSITION(", x, " IN ", y, ")"), |
||||
|
regexp_replace = dbplyr::sql_prefix("REGEXP_REPLACE", 3), |
||||
|
rtrim = dbplyr::sql_prefix("RTRIM", 2), |
||||
|
rpad = dbplyr::sql_prefix("RPAD", 2), |
||||
|
rpad_with = dbplyr::sql_prefix("RPAD", 3), |
||||
|
lpad = dbplyr::sql_prefix("LPAD", 2), |
||||
|
lpad_with = dbplyr::sql_prefix("LPAD", 3), |
||||
|
strpos = dbplyr::sql_prefix("STRPOS", 2), |
||||
|
substr = dbplyr::sql_prefix("SUBSTR", 3), |
||||
|
trim = function(x, y, z) dbplyr::build_sql("TRIM(", x, " ", y, " FROM ", z, ")"), |
||||
|
upper = dbplyr::sql_prefix("UPPER", 1), |
||||
|
toupper = dbplyr::sql_prefix("UPPER", 1) |
||||
|
), |
||||
|
|
||||
|
aggregate = dbplyr::sql_translator( |
||||
|
.parent = dbplyr::base_agg, |
||||
|
n = function() dbplyr::sql("COUNT(*)"), |
||||
|
cor = dbplyr::sql_prefix("CORR"), |
||||
|
cov = dbplyr::sql_prefix("COVAR_SAMP"), |
||||
|
sd = dbplyr::sql_prefix("STDDEV_SAMP"), |
||||
|
var = dbplyr::sql_prefix("VAR_SAMP"), |
||||
|
n_distinct = function(x) { |
||||
|
dbplyr::build_sql(dbplyr::sql("COUNT(DISTINCT "), x, dbplyr::sql(")")) |
||||
|
} |
||||
|
), |
||||
|
|
||||
|
window = dbplyr::sql_translator( |
||||
|
.parent = dbplyr::base_win, |
||||
|
n = function() { dbplyr::win_over(dbplyr::sql("count(*)"), |
||||
|
partition = dbplyr::win_current_group()) }, |
||||
|
cor = dbplyr::win_recycled("corr"), |
||||
|
cov = dbplyr::win_recycled("covar_samp"), |
||||
|
sd = dbplyr::win_recycled("stddev_samp"), |
||||
|
var = dbplyr::win_recycled("var_samp"), |
||||
|
all = dbplyr::win_recycled("bool_and"), |
||||
|
any = dbplyr::win_recycled("bool_or") |
||||
|
) |
||||
|
|
||||
|
) |
||||
|
|
||||
|
} |
@ -1,11 +1,15 @@ |
|||||
% Generated by roxygen2: do not edit by hand |
% Generated by roxygen2: do not edit by hand |
||||
% Please edit documentation in R/jdbc.r |
% Please edit documentation in R/jdbc.r, R/sql_translate_env.R |
||||
\name{Athena} |
\name{Athena} |
||||
\alias{Athena} |
\alias{Athena} |
||||
|
\alias{sql_translate_env.AthenaConnection} |
||||
\title{AthenaJDBC} |
\title{AthenaJDBC} |
||||
\usage{ |
\usage{ |
||||
Athena(identifier.quote = "`") |
Athena(identifier.quote = "`") |
||||
|
|
||||
|
\method{sql_translate_env}{AthenaConnection}(con) |
||||
} |
} |
||||
\description{ |
\description{ |
||||
AthenaJDBC |
AthenaJDBC |
||||
} |
} |
||||
|
\keyword{internal} |
||||
|
Loading…
Reference in new issue