dtenedor commented on code in PR #47851:
URL: https://github.com/apache/spark/pull/47851#discussion_r1731907437
##########
sql/core/src/main/scala/org/apache/spark/sql/functions.scala:
##########
@@ -7866,6 +7874,14 @@ object functions {
*/
def nvl2(col1: Column, col2: Column, col3: Column): Column =
Column.fn("nvl2", col1, col2, col3)
+ /**
+ * Returns zero if `col` is null, or `col` otherwise.
+ *
+ * @group conditional_funcs
+ * @since 4.0.0
+ */
+ def zeroifnull(col: Column): Column = Column.fn("zeroifnull", col)
Review Comment:
Sure, this is done.
##########
python/pyspark/sql/functions/builtin.py:
##########
@@ -20681,6 +20681,26 @@ def nullif(col1: "ColumnOrName", col2: "ColumnOrName")
-> Column:
return _invoke_function_over_columns("nullif", col1, col2)
+@_try_remote_functions
+def nullifzero(col: "ColumnOrName") -> Column:
+ """
+ Returns null if `col` is equal to zero, or `col` otherwise.
+
+ .. versionadded:: 4.0.0
+
+ Parameters
+ ----------
+ col : :class:`~pyspark.sql.Column` or str
+
+ Examples
+ --------
+ >>> df = spark.createDataFrame([(0,), (1,)], ["a"])
+ >>> df.select(nullifzero(df.a).alias('r')).collect()
+ [Row(r=None), Row(r=1)]
Review Comment:
Sure, this is done.
##########
python/pyspark/sql/functions/builtin.py:
##########
@@ -20724,6 +20744,26 @@ def nvl2(col1: "ColumnOrName", col2: "ColumnOrName",
col3: "ColumnOrName") -> Co
return _invoke_function_over_columns("nvl2", col1, col2, col3)
+@_try_remote_functions
+def zeroifnull(col: "ColumnOrName") -> Column:
+ """
+ Returns zero if `col` is null, or `col` otherwise.
+
+ .. versionadded:: 4.0.0
+
+ Parameters
+ ----------
+ col : :class:`~pyspark.sql.Column` or str
+
+ Examples
+ --------
+ >>> df = spark.createDataFrame([(None,), (1,)], ["a"])
+ >>> df.select(zeroifnull(df.a).alias('r')).collect()
Review Comment:
sounds good, updated!
##########
sql/core/src/test/scala/org/apache/spark/sql/DataFrameFunctionsSuite.scala:
##########
@@ -331,6 +331,15 @@ class DataFrameFunctionsSuite extends QueryTest with
SharedSparkSession {
checkAnswer(df.select(nullif(lit(5), lit(5))), Seq(Row(null)))
}
+ test("nullifzero function") {
+ val df = Seq((0)).toDF("a")
+ checkAnswer(df.selectExpr("nullifzero(0)"), Seq(Row(null)))
+ checkAnswer(df.select(nullifzero(lit(0))), Seq(Row(null)))
+
+ checkAnswer(df.selectExpr("nullifzero(a)"), Seq(Row(null)))
Review Comment:
sounds good, this is done.
##########
sql/core/src/test/scala/org/apache/spark/sql/DataFrameFunctionsSuite.scala:
##########
@@ -331,6 +331,15 @@ class DataFrameFunctionsSuite extends QueryTest with
SharedSparkSession {
checkAnswer(df.select(nullif(lit(5), lit(5))), Seq(Row(null)))
}
+ test("nullifzero function") {
+ val df = Seq((0)).toDF("a")
+ checkAnswer(df.selectExpr("nullifzero(0)"), Seq(Row(null)))
Review Comment:
sounds good, removed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]