diff options
author | zhichao.li <zhichao.li@intel.com> | 2015-07-02 20:37:31 -0700 |
---|---|---|
committer | Reynold Xin <rxin@databricks.com> | 2015-07-02 20:37:31 -0700 |
commit | 1a7a7d7d579c5cba104daffbda977915802bf9b9 (patch) | |
tree | 1f379c921b8a50e3738368d23802c5533dd1ff9b /sql/core | |
parent | aa7bbc143844020e4711b3aa4ce75c1b7733a80d (diff) | |
download | spark-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.scala | 16 | ||||
-rw-r--r-- | sql/core/src/test/scala/org/apache/spark/sql/MathExpressionsSuite.scala | 13 |
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) } |