Skip to content
Permalink
Browse files
Improve hive aggregate/window translation
  • Loading branch information
hadley committed Mar 17, 2019
1 parent 692be52 commit f4fcfdc9f73d56bbf2d93eb705b57709ccae52e5
Showing 2 changed files with 11 additions and 5 deletions.
@@ -5,19 +5,24 @@ sql_translate_env.Hive <- function(con) {
bitwShiftL = sql_prefix("SHIFTLEFT", 2),
bitwShiftR = sql_prefix("SHIFTRIGHT", 2),

var = sql_prefix("VARIANCE"),
cot = function(x){
sql_expr(1 / tan(!!x))
},
quantile = sql_quantile("PERCENTILE"),
median = sql_median("PERCENTILE"),

str_replace_all = function(string, pattern, replacement) {
sql_expr(regexp_replace(!!string, !!pattern, !!replacement))
}
),
base_odbc_agg,
base_odbc_win
sql_translator(.parent = base_odbc_agg,
var = sql_prefix("VARIANCE"),
quantile = sql_quantile("PERCENTILE"),
median = sql_median("PERCENTILE")
),
sql_translator(.parent = base_odbc_agg,
var = win_aggregate("VARIANCE"),
quantile = sql_quantile("PERCENTILE", window = TRUE),
median = sql_median("PERCENTILE", window = TRUE)
)
)
}

@@ -10,6 +10,7 @@ test_that("custom scalar & string functions translated correctly", {
expect_equal(trans(bitwShiftR(x, 2L)), sql("SHIFTRIGHT(`x`, 2)"))
expect_equal(trans(cot(x)), sql("1.0 / TAN(`x`)"))
expect_equal(trans(str_replace_all(x, "old", "new")), sql("REGEXP_REPLACE(`x`, 'old', 'new')"))
expect_equal(trans(median(x)), sql("PERCENTILE(`x`, 0.5) OVER ()"))

})

0 comments on commit f4fcfdc

Please sign in to comment.