Skip to content

Commit

Permalink
Improved snowflake.snowpark.functions to support double and varchar.
Browse files Browse the repository at this point in the history
  • Loading branch information
sfc-gh-lninobrijaldo committed Sep 27, 2024
1 parent 0751cec commit 94869eb
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 12 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
- Added support for file writes. This feature is currently in private preview.

#### Improvements
- Improved `snowflake.snowpark.functions` to support double and varchar.

#### Bug Fixes

Expand Down
3 changes: 2 additions & 1 deletion src/snowflake/snowpark/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -5381,7 +5381,8 @@ def array_remove(array: ColumnOrName, element: ColumnOrLiteral) -> Column:
- `ARRAY <https://docs.snowflake.com/en/sql-reference/data-types-semistructured#label-data-type-array>`_ for more details on semi-structured arrays.
"""
a = _to_col_if_str(array, "array_remove")
return builtin("array_remove")(a, element)
e = lit(element).cast("VARIANT") if isinstance(element, str) else element
return builtin("array_remove")(a, e)


def array_cat(array1: ColumnOrName, array2: ColumnOrName) -> Column:
Expand Down
97 changes: 86 additions & 11 deletions tests/integ/scala/test_function_suite.py
Original file line number Diff line number Diff line change
Expand Up @@ -2829,25 +2829,100 @@ def test_array_append(session):
reason="array_remove is not yet supported in local testing mode.",
)
def test_array_remove(session):
Utils.check_answer(
actual = session.createDataFrame([([1, 2, 4, 4, 3],), ([],)], ["data"])
actual = actual.select(array_remove(actual.data, 4))
expected = session.createDataFrame(
[
Row("[\n 2,\n 3\n]"),
Row("[\n 6,\n 7\n]"),
Row("[\n 1,\n 2,\n 3\n]"),
Row("[]"),
],
TestData.array1(session).select(
array_remove(array_remove(col("arr1"), lit(1)), lit(8))
),
sort=False,
["data"],
)
Utils.check_answer(actual, expected)

Utils.check_answer(
actual = session.createDataFrame([(["a", "b", "c", "a", "a"],), ([],)], ["data"])
actual = actual.select(array_remove(actual.data, "a"))
expected = session.createDataFrame(
[
Row('[\n "b",\n "c"\n]'),
Row("[]"),
],
["data"],
)
Utils.check_answer(actual, expected)

actual = session.createDataFrame(
[(["apple", "banana", "apple", "orange"],), ([],)], ["data"]
)
actual = actual.select(array_remove(actual.data, "apple"))
expected = session.createDataFrame(
[
Row('[\n "banana",\n "orange"\n]'),
Row("[]"),
],
["data"],
)
Utils.check_answer(actual, expected)

actual = session.createDataFrame([([1, "2", 3.1, 1, 3],), ([],)], ["data"])
actual = actual.select(array_remove(actual.data, 1))
expected = session.createDataFrame(
[
Row('[\n "2",\n 3.1,\n 3\n]'),
Row("[]"),
],
["data"],
)
Utils.check_answer(actual, expected)

actual = session.createDataFrame([(["@", ";", "3.1", 1, 5 / 3],), ([],)], ["data"])
actual = actual.select(array_remove(actual.data, 1))
expected = session.createDataFrame(
[
Row('[\n "@",\n ";",\n "3.1",\n 1.6666666666666667\n]'),
Row("[]"),
],
["data"],
)
Utils.check_answer(actual, expected)

actual = session.createDataFrame([([-1, -2, -4, -4, -3],), ([],)], ["data"])
actual = actual.select(array_remove(actual.data, 1))
expected = session.createDataFrame(
[
Row("[\n -1,\n -2,\n -4,\n -4,\n -3\n]"),
Row("[]"),
],
["data"],
)
Utils.check_answer(actual, expected)

actual = session.createDataFrame([([4.4, 5.5, 1.1],), ([],)], ["data"])
actual = actual.select(array_remove(actual.data, 5.5))
expected = session.createDataFrame(
[
Row("[\n 4.4,\n 1.1\n]"),
Row("[]"),
],
["data"],
)
Utils.check_answer(actual, expected)

actual = TestData.array1(session).select(
array_remove(array_remove(col("arr1"), lit(1)), lit(8))
)

expected = session.createDataFrame(
[
Row("[\n 2,\n 3\n]"),
Row("[\n 6,\n 7\n]"),
],
TestData.array1(session).select(
array_remove(array_remove(col("arr1"), 1), lit(8))
),
["data"],
)

Utils.check_answer(
actual,
expected,
sort=False,
)

Expand Down

0 comments on commit 94869eb

Please sign in to comment.