diff --git a/NEWS.md b/NEWS.md index 3fe22d0..79ad64b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,6 @@ # sergeant 0.9.1 +- Fixed SQL translation bug for `lag()` and `lead()` (@alistaire47) - Fixed identifier quoting issue #44 by @alistaire47 - Fixed `RETRY` bug in `drill_query` (directg REST API) diff --git a/R/dplyr.r b/R/dplyr.r index 00d8266..243a3a4 100644 --- a/R/dplyr.r +++ b/R/dplyr.r @@ -263,6 +263,20 @@ sql_translate_env.DrillConnection <- function(con) { .parent = dbplyr::base_win, n = function() { dbplyr::win_over(dbplyr::sql("count(*)"), partition = dbplyr::win_current_group()) }, + lag = function(x, n = 1L, default = NA, order_by = NULL, ...) { + dbplyr::win_over( + dbplyr::sql_call2("lag", x, n), + partition = dbplyr::win_current_group(), + order = if (is.null(order_by)) dbplyr::win_current_order() else order_by + ) + }, + lead = function(x, n = 1L, default = NA, order_by = NULL, ...) { + dbplyr::win_over( + dbplyr::sql_call2("lead", x, n), + partition = dbplyr::win_current_group(), + order = if (is.null(order_by)) dbplyr::win_current_order() else order_by + ) + }, cor = dbplyr::win_recycled("corr"), cov = dbplyr::win_recycled("covar_samp"), sd = dbplyr::win_recycled("stddev_samp"),