Поделиться через


array_contains

Возвращает логическое значение, указывающее, содержит ли массив заданное значение. Возвращает значение NULL, если массив имеет значение NULL, значение true, если массив содержит заданное значение и значение false.

Синтаксис

from pyspark.sql import functions as sf

sf.array_contains(col, value)

Параметры

Параметр Тип Description
col pyspark.sql.Column или str Целевой столбец, содержащий массивы.
value Любое Значение или столбец для проверки в массиве.

Возвраты

pyspark.sql.Column: новый столбец логического типа, где каждое значение указывает, содержит ли соответствующий массив из входного столбца указанное значение.

Примеры

Пример 1. Базовое использование функции array_contains.

from pyspark.sql import functions as sf
df = spark.createDataFrame([(["a", "b", "c"],), ([],)], ['data'])
df.select(sf.array_contains(df.data, "a")).show()
+-----------------------+
|array_contains(data, a)|
+-----------------------+
|                   true|
|                  false|
+-----------------------+

Пример 2. Использование функции array_contains с столбцом.

from pyspark.sql import functions as sf
df = spark.createDataFrame([(["a", "b", "c"], "c"),
                           (["c", "d", "e"], "d"),
                           (["e", "a", "c"], "b")], ["data", "item"])
df.select(sf.array_contains(df.data, sf.col("item"))).show()
+--------------------------+
|array_contains(data, item)|
+--------------------------+
|                      true|
|                      true|
|                     false|
+--------------------------+

Пример 3. Попытка использовать функцию array_contains с пустым массивом.

from pyspark.sql import functions as sf
df = spark.createDataFrame([(None,), (["a", "b", "c"],)], ['data'])
df.select(sf.array_contains(df.data, "a")).show()
+-----------------------+
|array_contains(data, a)|
+-----------------------+
|                   NULL|
|                   true|
+-----------------------+

Пример 4. Использование array_contains с столбцом массива, содержащим значения NULL.

from pyspark.sql import functions as sf
df = spark.createDataFrame([(["a", None, "c"],)], ['data'])
df.select(sf.array_contains(df.data, "a")).show()
+-----------------------+
|array_contains(data, a)|
+-----------------------+
|                   true|
+-----------------------+