Skip to content

Commit e1d344a

Browse files
author
Ximo Guanter Gonzalbez
committed
SPARK-2186: Spark SQL DSL support for simple aggregations such as SUM and AVG
1 parent b6b4485 commit e1d344a

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

sql/core/src/main/scala/org/apache/spark/sql/SchemaRDD.scala

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,13 @@ class SchemaRDD(
133133
*
134134
* @group Query
135135
*/
136-
def select(exprs: NamedExpression*): SchemaRDD =
137-
new SchemaRDD(sqlContext, Project(exprs, logicalPlan))
136+
def select(exprs: Expression*): SchemaRDD = {
137+
val aliases = exprs.zipWithIndex.map {
138+
case (ne: NamedExpression, _) => ne
139+
case (e, i) => Alias(e, s"c$i")()
140+
}
141+
new SchemaRDD(sqlContext, Project(aliases, logicalPlan))
142+
}
138143

139144
/**
140145
* Filters the output, only returning those rows where `condition` evaluates to true.

sql/core/src/test/scala/org/apache/spark/sql/DslQuerySuite.scala

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,30 @@ class DslQuerySuite extends QueryTest {
6161
Seq(Seq("1")))
6262
}
6363

64+
test("select with functions") {
65+
checkAnswer(
66+
testData.select(Sum('value)),
67+
Seq(Seq(5050.0)))
68+
69+
checkAnswer(
70+
testData.select(Average('value)),
71+
Seq(Seq(50.5)))
72+
73+
checkAnswer(
74+
testData.select(Count(1)),
75+
Seq(Seq(100)))
76+
77+
checkAnswer(
78+
testData2.select('a + 'b, 'a < 'b),
79+
Seq(
80+
Seq(2, false),
81+
Seq(3, true),
82+
Seq(3, false),
83+
Seq(4, false),
84+
Seq(4, false),
85+
Seq(5, false)))
86+
}
87+
6488
test("sorting") {
6589
checkAnswer(
6690
testData2.orderBy('a.asc, 'b.asc),

0 commit comments

Comments
 (0)