countDistinct(col, *cols)
Описание
Функция countDistinct()
является синонимом функции count_distinct()
и возвращает количество уникальных значений в одном или нескольких столбцах. Это агрегатная функция, которая должна использоваться с groupBy()
.
Параметры
col
: Column - первый столбец для подсчета уникальных значений*cols
: Column - дополнительные столбцы для подсчета уникальных значений
Возвращаемое значение
Long - количество уникальных значений
Пример использования
from pyspark.sql.functions import countDistinct
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("countDistinct_example").getOrCreate()
# Создаем DataFrame
data = [
("A", 1, "x"),
("A", 2, "y"),
("A", 2, "y"),
("B", 3, "z"),
("B", 4, "w"),
("B", 4, "w"),
("B", None, None)
]
df = spark.createDataFrame(data, ["group", "value1", "value2"])
# Используем countDistinct для подсчета уникальных значений
result = df.groupBy("group").agg(
countDistinct("value1").alias("distinct_value1"),
countDistinct("value2").alias("distinct_value2"),
countDistinct("value1", "value2").alias("distinct_pairs")
).show()
# Результат:
# +-----+----------------+----------------+--------------+
# |group|distinct_value1 |distinct_value2 |distinct_pairs|
# +-----+----------------+----------------+--------------+
# |A |2 |2 |2 |
# |B |2 |2 |2 |
# +-----+----------------+----------------+--------------+
Примечания
- NULL значения игнорируются при подсчете
- Для подсчета всех значений используйте
count()
- Для приблизительного подсчета уникальных значений используйте
approxCountDistinct()
- Для подсчета истинных значений используйте
count_if()
countDistinct()
является синонимомcount_distinct()