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

Reply via email to