aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst
diff options
context:
space:
mode:
authorXimo Guanter Gonzalbez <ximo@tid.es>2014-07-02 10:03:44 -0700
committerMichael Armbrust <michael@databricks.com>2014-07-02 10:03:44 -0700
commit5c6ec94da1bacd8e65a43acb92b6721493484e7b (patch)
treefda1ef7aff92578679cb344ded16bc40930efe32 /sql/catalyst
parent6596392da0fc0fee89e22adfca239a3477dfcbab (diff)
downloadspark-5c6ec94da1bacd8e65a43acb92b6721493484e7b.tar.gz
spark-5c6ec94da1bacd8e65a43acb92b6721493484e7b.tar.bz2
spark-5c6ec94da1bacd8e65a43acb92b6721493484e7b.zip
SPARK-2186: Spark SQL DSL support for simple aggregations such as SUM and AVG
**Description** This patch enables using the `.select()` function in SchemaRDD with functions such as `Sum`, `Count` and other. **Testing** Unit tests added. Author: Ximo Guanter Gonzalbez <ximo@tid.es> Closes #1211 from edrevo/add-expression-support-in-select and squashes the following commits: fe4a1e1 [Ximo Guanter Gonzalbez] Extend SQL DSL to functions e1d344a [Ximo Guanter Gonzalbez] SPARK-2186: Spark SQL DSL support for simple aggregations such as SUM and AVG
Diffstat (limited to 'sql/catalyst')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala11
1 files changed, 11 insertions, 0 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala
index 26ad4837b0..1b503b957d 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala
@@ -108,6 +108,17 @@ package object dsl {
implicit def symbolToUnresolvedAttribute(s: Symbol) = analysis.UnresolvedAttribute(s.name)
+ def sum(e: Expression) = Sum(e)
+ def sumDistinct(e: Expression) = SumDistinct(e)
+ def count(e: Expression) = Count(e)
+ def countDistinct(e: Expression*) = CountDistinct(e)
+ def avg(e: Expression) = Average(e)
+ def first(e: Expression) = First(e)
+ def min(e: Expression) = Min(e)
+ def max(e: Expression) = Max(e)
+ def upper(e: Expression) = Upper(e)
+ def lower(e: Expression) = Lower(e)
+
implicit class DslSymbol(sym: Symbol) extends ImplicitAttribute { def s = sym.name }
// TODO more implicit class for literal?
implicit class DslString(val s: String) extends ImplicitOperators {