Skip to content

map_filter(map, f)

Описание

Функция map_filter() фильтрует элементы карты (map) с помощью указанной функции-предиката.

Параметры

  • map: Column - карта (map)
  • f: Column - функция-предикат, которая принимает ключ и значение и возвращает boolean

Возвращаемое значение

Column - новая карта, содержащая только элементы, для которых функция-предикат вернула true

Пример использования

from pyspark.sql.functions import map_filter, map, expr
from pyspark.sql import SparkSession

# Создаем SparkSession
spark = SparkSession.builder.appName("map_filter_example").getOrCreate()

# Создаем DataFrame с картами
data = [
    ({"a": 1, "b": 2, "c": 3},),
    ({"x": 10, "y": 20, "z": 30},)
]
df = spark.createDataFrame(data, ["map"])

# Фильтруем элементы карты
result = df.withColumn(
    "even_values",
    map_filter("map", expr("(k, v) -> v % 2 == 0"))
).withColumn(
    "greater_than_10",
    map_filter("map", expr("(k, v) -> v > 10"))
)
result.show(truncate=False)

# Результат:
# +----------------+----------------+------------------+
# |map             |even_values     |greater_than_10   |
# +----------------+----------------+------------------+
# |{a -> 1, b -> 2}|{b -> 2}       |{}                |
# |{x -> 10, y -> 20}|{x -> 10, y -> 20}|{y -> 20, z -> 30}|
# +----------------+----------------+------------------+

Примечания

  • Возвращает NULL, если карта NULL
  • Возвращает пустую карту, если ни один элемент не удовлетворяет условию
  • Полезно для:
  • Фильтрации элементов карты
  • Выбора элементов по условию
  • Создания подмножеств карты
  • Связанные функции:
  • transform_keys() - преобразование ключей карты
  • transform_values() - преобразование значений карты