This is an automated email from the ASF dual-hosted git repository. sarutak pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push: new ca1c09d [SPARK-36882][PYTHON] Support ILIKE API on Python ca1c09d is described below commit ca1c09d88c21d0f8664df8e852778f864f130d94 Author: Leona Yoda <yo...@oss.nttdata.com> AuthorDate: Wed Sep 29 15:04:03 2021 +0900 [SPARK-36882][PYTHON] Support ILIKE API on Python ### What changes were proposed in this pull request? Support ILIKE (case insensitive LIKE) API on Python. ### Why are the changes needed? ILIKE statement on SQL interface is supported by SPARK-36674. This PR will support Python API for it. ### Does this PR introduce _any_ user-facing change? Yes. Users can call `ilike` from Python. ### How was this patch tested? Unit tests. Closes #34135 from yoda-mon/python-ilike. Authored-by: Leona Yoda <yo...@oss.nttdata.com> Signed-off-by: Kousuke Saruta <saru...@oss.nttdata.com> --- python/docs/source/reference/pyspark.sql.rst | 1 + python/pyspark/sql/column.py | 21 +++++++++++++++++++++ python/pyspark/sql/tests/test_column.py | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/python/docs/source/reference/pyspark.sql.rst b/python/docs/source/reference/pyspark.sql.rst index f5a8357..0fd2c4d 100644 --- a/python/docs/source/reference/pyspark.sql.rst +++ b/python/docs/source/reference/pyspark.sql.rst @@ -259,6 +259,7 @@ Column APIs Column.eqNullSafe Column.getField Column.getItem + Column.ilike Column.isNotNull Column.isNull Column.isin diff --git a/python/pyspark/sql/column.py b/python/pyspark/sql/column.py index 9046e7f..c46b0eb 100644 --- a/python/pyspark/sql/column.py +++ b/python/pyspark/sql/column.py @@ -507,6 +507,26 @@ class Column(object): >>> df.filter(df.name.like('Al%')).collect() [Row(age=2, name='Alice')] """ + _ilike_doc = """ + SQL ILIKE expression (case insensitive LIKE). Returns a boolean :class:`Column` + based on a case insensitive match. + + .. versionadded:: 3.3.0 + + Parameters + ---------- + other : str + a SQL LIKE pattern + + See Also + -------- + pyspark.sql.Column.rlike + + Examples + -------- + >>> df.filter(df.name.ilike('%Ice')).collect() + [Row(age=2, name='Alice')] + """ _startswith_doc = """ String starts with. Returns a boolean :class:`Column` based on a string match. @@ -541,6 +561,7 @@ class Column(object): contains = _bin_op("contains", _contains_doc) rlike = _bin_op("rlike", _rlike_doc) like = _bin_op("like", _like_doc) + ilike = _bin_op("ilike", _ilike_doc) startswith = _bin_op("startsWith", _startswith_doc) endswith = _bin_op("endsWith", _endswith_doc) diff --git a/python/pyspark/sql/tests/test_column.py b/python/pyspark/sql/tests/test_column.py index c2530b2..9a918c2 100644 --- a/python/pyspark/sql/tests/test_column.py +++ b/python/pyspark/sql/tests/test_column.py @@ -75,7 +75,7 @@ class ColumnTests(ReusedSQLTestCase): self.assertTrue(all(isinstance(c, Column) for c in cb)) cbool = (ci & ci), (ci | ci), (~ci) self.assertTrue(all(isinstance(c, Column) for c in cbool)) - css = cs.contains('a'), cs.like('a'), cs.rlike('a'), cs.asc(), cs.desc(),\ + css = cs.contains('a'), cs.like('a'), cs.rlike('a'), cs.ilike('A'), cs.asc(), cs.desc(),\ cs.startswith('a'), cs.endswith('a'), ci.eqNullSafe(cs) self.assertTrue(all(isinstance(c, Column) for c in css)) self.assertTrue(isinstance(ci.cast(LongType()), Column)) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org