Skip to content
Prev Previous commit
Next Next commit
address comment
  • Loading branch information
JihongMA committed Nov 6, 2015
commit b69d1e68d52739df83a9ebe797c83f4b8c5ef0dd
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,10 @@ case class Kurtosis(child: Expression,
s"$prettyName requires ${momentOrder + 1} central moments, received: ${moments.length}")
val m2 = moments(2)
val m4 = moments(4)
if (n == 0.0 || m2 == 0.0) {
null
} else {

if (n == 0.0) null
else if (m2 == 0.0) Double.NaN
else {
n * m4 / (m2 * m2) - 3.0
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,10 @@ case class Skewness(child: Expression,
s"$prettyName requires ${momentOrder + 1} central moments, received: ${moments.length}")
val m2 = moments(2)
val m3 = moments(3)
if (n == 0.0 || m2 == 0.0) {
null
} else {

if (n == 0.0) null
else if (m2 == 0.0) Double.NaN
else {
math.sqrt(n) * m3 / math.sqrt(m2 * m2 * m2)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ case class StddevSamp(child: Expression,
require(moments.length == momentOrder + 1,
s"$prettyName requires ${momentOrder + 1} central moments, received: ${moments.length}")

if (n == 0.0 || n == 1.0) null else math.sqrt(moments(2) / (n - 1.0))
if (n == 0.0) null
else if (n == 1.0) Double.NaN
else math.sqrt(moments(2) / (n - 1.0))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ case class VarianceSamp(child: Expression,
require(moments.length == momentOrder + 1,
s"$prettyName requires ${momentOrder + 1} central moment, received: ${moments.length}")

if (n == 0.0 || n == 1.0) null else moments(2) / (n - 1.0)
if (n == 0.0) null
else if (n== 1.0) Double.NaN
else moments(2) / (n - 1.0)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ class DataFrameAggregateSuite extends QueryTest with SharedSQLContext {
val input = Seq((1, 2)).toDF("a", "b")
checkAnswer(
input.agg(variance('a), var_samp('a), var_pop('a), skewness('a), kurtosis('a)),
Row(null, null, 0.0, null, null))
Row(Double.NaN, Double.NaN, 0.0, Double.NaN, Double.NaN))

checkAnswer(
input.agg(
Expand All @@ -229,7 +229,7 @@ class DataFrameAggregateSuite extends QueryTest with SharedSQLContext {
expr("var_pop(a)"),
expr("skewness(a)"),
expr("kurtosis(a)")),
Row(null, null, 0.0, null, null))
Row(Double.NaN, Double.NaN, 0.0, Double.NaN, Double.NaN))
}

test("null moments") {
Expand Down