aboutsummaryrefslogtreecommitdiff
path: root/sql/core
diff options
context:
space:
mode:
authorzhichao.li <zhichao.li@intel.com>2015-07-02 20:37:31 -0700
committerReynold Xin <rxin@databricks.com>2015-07-02 20:37:31 -0700
commit1a7a7d7d579c5cba104daffbda977915802bf9b9 (patch)
tree1f379c921b8a50e3738368d23802c5533dd1ff9b /sql/core
parentaa7bbc143844020e4711b3aa4ce75c1b7733a80d (diff)
downloadspark-1a7a7d7d579c5cba104daffbda977915802bf9b9.tar.gz
spark-1a7a7d7d579c5cba104daffbda977915802bf9b9.tar.bz2
spark-1a7a7d7d579c5cba104daffbda977915802bf9b9.zip
[SPARK-8213][SQL]Add function factorial
Author: zhichao.li <zhichao.li@intel.com> Closes #6822 from zhichao-li/factorial and squashes the following commits: 26edf4f [zhichao.li] add factorial
Diffstat (limited to 'sql/core')
-rw-r--r--sql/core/src/main/scala/org/apache/spark/sql/functions.scala16
-rw-r--r--sql/core/src/test/scala/org/apache/spark/sql/MathExpressionsSuite.scala13
2 files changed, 28 insertions, 1 deletions
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/functions.scala b/sql/core/src/main/scala/org/apache/spark/sql/functions.scala
index 4ee1fb8374..0d5d49c3dd 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/functions.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/functions.scala
@@ -1023,6 +1023,22 @@ object functions {
def expm1(columnName: String): Column = expm1(Column(columnName))
/**
+ * Computes the factorial of the given value.
+ *
+ * @group math_funcs
+ * @since 1.5.0
+ */
+ def factorial(e: Column): Column = Factorial(e.expr)
+
+ /**
+ * Computes the factorial of the given column.
+ *
+ * @group math_funcs
+ * @since 1.5.0
+ */
+ def factorial(columnName: String): Column = factorial(Column(columnName))
+
+ /**
* Computes the floor of the given value.
*
* @group math_funcs
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/MathExpressionsSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/MathExpressionsSuite.scala
index 4c5696deaf..dc8f994adb 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/MathExpressionsSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/MathExpressionsSuite.scala
@@ -20,7 +20,6 @@ package org.apache.spark.sql
import org.apache.spark.sql.functions._
import org.apache.spark.sql.functions.{log => logarithm}
-
private object MathExpressionsTestData {
case class DoubleData(a: java.lang.Double, b: java.lang.Double)
case class NullDoubles(a: java.lang.Double)
@@ -183,6 +182,18 @@ class MathExpressionsSuite extends QueryTest {
testOneToOneMathFunction(floor, math.floor)
}
+ test("factorial") {
+ val df = (0 to 5).map(i => (i, i)).toDF("a", "b")
+ checkAnswer(
+ df.select(factorial('a)),
+ Seq(Row(1), Row(1), Row(2), Row(6), Row(24), Row(120))
+ )
+ checkAnswer(
+ df.selectExpr("factorial(a)"),
+ Seq(Row(1), Row(1), Row(2), Row(6), Row(24), Row(120))
+ )
+ }
+
test("rint") {
testOneToOneMathFunction(rint, math.rint)
}