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 <[email protected]>
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 <[email protected]>
Signed-off-by: Kousuke Saruta <[email protected]>
---
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: [email protected]
For additional commands, e-mail: [email protected]