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()