From 29d8a5c6c22202cdf7d6cc44f1d6cbeca5946918 Mon Sep 17 00:00:00 2001 From: Narine Kokhlikyan Date: Tue, 21 Jun 2016 01:12:11 +0300 Subject: [PATCH 1/2] Fixed duplicated documentation problem + separated documentation for dapply and dapplyCollect --- R/pkg/R/DataFrame.R | 4 +++- R/pkg/R/generics.R | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/R/pkg/R/DataFrame.R b/R/pkg/R/DataFrame.R index 0ff350d44d4b3..1170e65d31a51 100644 --- a/R/pkg/R/DataFrame.R +++ b/R/pkg/R/DataFrame.R @@ -1186,6 +1186,7 @@ dapplyInternal <- function(x, func, schema) { #' @family SparkDataFrame functions #' @rdname dapply #' @name dapply +#' @seealso dapplyCollect \link{dapplyCollect} #' @export #' @examples #' \dontrun{ @@ -1229,8 +1230,9 @@ setMethod("dapply", #' to each partition will be passed. #' The output of func should be a data.frame. #' @family SparkDataFrame functions -#' @rdname dapply +#' @rdname dapplyCollect #' @name dapplyCollect +#' @seealso dapply \link{dapply} #' @export #' @examples #' \dontrun{ diff --git a/R/pkg/R/generics.R b/R/pkg/R/generics.R index 50fc204f998a5..c7cfb11dadaed 100644 --- a/R/pkg/R/generics.R +++ b/R/pkg/R/generics.R @@ -450,7 +450,7 @@ setGeneric("covar_pop", function(col1, col2) {standardGeneric("covar_pop") }) #' @export setGeneric("dapply", function(x, func, schema) { standardGeneric("dapply") }) -#' @rdname dapply +#' @rdname dapplyCollect #' @export setGeneric("dapplyCollect", function(x, func) { standardGeneric("dapplyCollect") }) From 02d6bab047c9ae99f3ef154826a362529d0423be Mon Sep 17 00:00:00 2001 From: Narine Kokhlikyan Date: Sun, 21 Aug 2016 14:10:07 -0700 Subject: [PATCH 2/2] Initial commit --- .../apache/spark/sql/RelationalGroupedDataset.scala | 10 ++++++++++ .../org/apache/spark/sql/DataFrameAggregateSuite.scala | 3 +++ 2 files changed, 13 insertions(+) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/RelationalGroupedDataset.scala b/sql/core/src/main/scala/org/apache/spark/sql/RelationalGroupedDataset.scala index 53d732403f979..25d71aa825018 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/RelationalGroupedDataset.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/RelationalGroupedDataset.scala @@ -388,6 +388,16 @@ class RelationalGroupedDataset protected[sql]( pivot(pivotColumn, values.asScala) } + /** + * Returns all grouping column names as an array. + * + * @since 2.1.0 + */ + def columns: Array[String] = { + val groupingNamedExpressions = groupingExprs.map(alias) + groupingNamedExpressions.map(_.name).toArray + } + /** * Applies the given serialized R function `func` to each group of data. For each unique group, * the function will be passed the group key and an iterator that contains all of the elements in diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala index 69a3b5f278fd8..043822363c35a 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala @@ -85,6 +85,9 @@ class DataFrameAggregateSuite extends QueryTest with SharedSQLContext { Row(new java.math.BigDecimal(3.0), new java.math.BigDecimal(3.0)), Row(null, new java.math.BigDecimal(2.0))) ) + + assert(df1.groupBy("key").columns.sameElements(Array("key"))) + assert(df1.groupBy("value1", "value2").columns.sameElements(Array("value1", "value2"))) } test("SPARK-17124 agg should be ordering preserving") {