zhengruifeng commented on code in PR #38867:
URL: https://github.com/apache/spark/pull/38867#discussion_r1093215215
##########
python/pyspark/sql/functions.py:
##########
@@ -7679,6 +7679,41 @@ def array_distinct(col: "ColumnOrName") -> Column:
return _invoke_function_over_columns("array_distinct", col)
+@try_remote_functions
+def array_insert(arr: "ColumnOrName", pos: "ColumnOrName", value:
"ColumnOrName") -> Column:
+ """
+ Collection function: adds an item into a given array at a specified
position. A position
+ specified beyond the size of the current array (plus additional element)
+ is extended with 'null' elements.
+
+ .. versionadded:: 3.4.0
+
+ Parameters
+ ----------
+ arr : :class:`~pyspark.sql.Column` or str
+ name of column containing an array
+ pos : :class:`~pyspark.sql.Column` or str
+ name of Numeric type column indicating position of insertion (starting
index 1)
Review Comment:
would you mind also doc the meaning of negative position?
##########
sql/core/src/test/resources/sql-tests/results/array.sql.out:
##########
@@ -431,6 +431,104 @@ struct<get(array(1, 2, 3), -1):int>
NULL
+-- !query
+select array_insert(array(1, 2, 3), 3, 4)
+-- !query schema
+struct<array_insert(array(1, 2, 3), 3, 4):array<int>>
+-- !query output
+[1,2,4,3]
+
+
+-- !query
+select array_insert(array(2, 3, 4), 0, 1)
Review Comment:
pos=0 also means the first item, is this expected? If so, I think we need to
document it.
##########
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/collectionOperations.scala:
##########
@@ -4601,6 +4601,231 @@ case class ArrayExcept(left: Expression, right:
Expression) extends ArrayBinaryL
newLeft: Expression, newRight: Expression): ArrayExcept = copy(left =
newLeft, right = newRight)
}
+@ExpressionDescription(
+ usage = "_FUNC_(x, pos, val) - Places val into index pos of array x (array
indices start at 1)",
+ examples = """
+ Examples:
+ > SELECT _FUNC_(array(1, 2, 3, 4), 5, 5);
+ [1,2,3,4,5]
Review Comment:
@cloud-fan thank you for the clarification
@Daniel-Davies sorry for ask you to switch to 0-based index, my bad.
--
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]