[SPARK-33258][R][SQL] Add asc_nulls_* and desc_nulls_* methods to SparkR
### What changes were proposed in this pull request? This PR adds the following `Column` methods to R API: - asc_nulls_first - asc_nulls_last - desc_nulls_first - desc_nulls_last ### Why are the changes needed? Feature parity. ### Does this PR introduce _any_ user-facing change? No, new methods. ### How was this patch tested? New unit tests. Closes #30159 from zero323/SPARK-33258. Authored-by: zero323 <mszymkiewicz@gmail.com> Signed-off-by: HyukjinKwon <gurwls223@apache.org>
This commit is contained in:
parent
7d11d972c3
commit
ea709d6748
|
@ -228,6 +228,8 @@ exportMethods("%<=>%",
|
|||
"arrays_zip",
|
||||
"arrays_zip_with",
|
||||
"asc",
|
||||
"asc_nulls_first",
|
||||
"asc_nulls_last",
|
||||
"ascii",
|
||||
"asin",
|
||||
"assert_true",
|
||||
|
@ -273,6 +275,8 @@ exportMethods("%<=>%",
|
|||
"degrees",
|
||||
"dense_rank",
|
||||
"desc",
|
||||
"desc_nulls_first",
|
||||
"desc_nulls_last",
|
||||
"dropFields",
|
||||
"element_at",
|
||||
"encode",
|
||||
|
|
|
@ -67,7 +67,11 @@ operators <- list(
|
|||
# we can not override `&&` and `||`, so use `&` and `|` instead
|
||||
"&" = "and", "|" = "or", "^" = "pow"
|
||||
)
|
||||
column_functions1 <- c("asc", "desc", "isNaN", "isNull", "isNotNull")
|
||||
column_functions1 <- c(
|
||||
"asc", "asc_nulls_first", "asc_nulls_last",
|
||||
"desc", "desc_nulls_first", "desc_nulls_last",
|
||||
"isNaN", "isNull", "isNotNull"
|
||||
)
|
||||
column_functions2 <- c("like", "rlike", "getField", "getItem", "contains")
|
||||
|
||||
createOperator <- function(op) {
|
||||
|
|
|
@ -675,6 +675,12 @@ setGeneric("broadcast", function(x) { standardGeneric("broadcast") })
|
|||
#' @rdname columnfunctions
|
||||
setGeneric("asc", function(x) { standardGeneric("asc") })
|
||||
|
||||
#' @rdname columnfunctions
|
||||
setGeneric("asc_nulls_first", function(x) { standardGeneric("asc_nulls_first") })
|
||||
|
||||
#' @rdname columnfunctions
|
||||
setGeneric("asc_nulls_last", function(x) { standardGeneric("asc_nulls_last") })
|
||||
|
||||
#' @rdname between
|
||||
setGeneric("between", function(x, bounds) { standardGeneric("between") })
|
||||
|
||||
|
@ -689,6 +695,12 @@ setGeneric("contains", function(x, ...) { standardGeneric("contains") })
|
|||
#' @rdname columnfunctions
|
||||
setGeneric("desc", function(x) { standardGeneric("desc") })
|
||||
|
||||
#' @rdname columnfunctions
|
||||
setGeneric("desc_nulls_first", function(x) { standardGeneric("desc_nulls_first") })
|
||||
|
||||
#' @rdname columnfunctions
|
||||
setGeneric("desc_nulls_last", function(x) { standardGeneric("desc_nulls_last") })
|
||||
|
||||
#' @rdname endsWith
|
||||
setGeneric("endsWith", function(x, suffix) { standardGeneric("endsWith") })
|
||||
|
||||
|
|
|
@ -1428,6 +1428,8 @@ test_that("column functions", {
|
|||
vector_to_array(c, "float32") + vector_to_array(c, "float64")
|
||||
c27 <- nth_value("x", 1L) + nth_value("y", 2, TRUE) +
|
||||
nth_value(column("v"), 3) + nth_value(column("z"), 4L, FALSE)
|
||||
c28 <- asc_nulls_first(c1) + asc_nulls_last(c1) +
|
||||
desc_nulls_first(c1) + desc_nulls_last(c1)
|
||||
|
||||
# Test if base::is.nan() is exposed
|
||||
expect_equal(is.nan(c("a", "b")), c(FALSE, FALSE))
|
||||
|
|
Loading…
Reference in a new issue