From fd72cd3790983c5664dc3824fda41dab8a4f90f4 Mon Sep 17 00:00:00 2001 From: Edward Visel Date: Thu, 20 May 2021 04:08:23 +0000 Subject: [PATCH] Fix SQL translation for `lag()` and `lead()` so Drill doesn't error out when passed a value for `default` --- NEWS.md | 1 + R/dplyr.r | 14 ++++++++++++++ 2 files changed, 15 insertions(+) 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"),