Skip to content

cardinality(column)

Описание

Функция cardinality() возвращает количество элементов в массиве или Map-столбце. Если столбец NULL, возвращается NULL.

Параметры

  • column: Column - массив или Map-столбец

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

Integer - количество элементов в массиве или Map-столбце

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

from pyspark.sql import SparkSession
from pyspark.sql.functions import cardinality

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

# Создаем DataFrame с массивами и Map-столбцами
data = [
    (1, ["a", "b", "c"], {"x": 1, "y": 2}),
    (2, ["x", "y"], {"a": 3}),
    (3, [], {}),
    (4, None, None)
]
df = spark.createDataFrame(data, ["id", "array", "map"])

# Получаем количество элементов
result = df.select(
    "id",
    cardinality("array").alias("array_size"),
    cardinality("map").alias("map_size")
).show()

# Результат:
# +---+----------+--------+
# | id|array_size|map_size|
# +---+----------+--------+
# |  1|         3|       2|
# |  2|         2|       1|
# |  3|         0|       0|
# |  4|      null|    null|
# +---+----------+--------+

Примечания

  • Для массивов эквивалентно функции size()
  • Для Map-столбцов возвращает количество пар ключ-значение
  • Для работы с JSON-массивами используйте json_array_length()
  • Для получения ключей JSON-объекта используйте json_object_keys()