approxCountDistinct(col[, rsd])
Описание
Функция approxCountDistinct()
возвращает приблизительное количество уникальных значений в столбце. Параметр rsd
(relative standard deviation) определяет точность приближения.
Параметры
col
: Column - столбец для подсчета уникальных значенийrsd
: double (опционально) - относительное стандартное отклонение (по умолчанию 0.05)
Возвращаемое значение
Long - приблизительное количество уникальных значений
Пример использования
from pyspark.sql.functions import approxCountDistinct
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("approxCountDistinct_example").getOrCreate()
# Создаем DataFrame
data = [
(1,),
(2,),
(2,),
(3,),
(3,),
(3,),
(4,),
(5,),
(6,),
(7,),
(8,),
(9,),
(10,)
]
df = spark.createDataFrame(data, ["value"])
# Используем approxCountDistinct с разными значениями rsd
result = df.agg(
approxCountDistinct("value").alias("default_rsd"),
approxCountDistinct("value", 0.01).alias("high_precision"),
approxCountDistinct("value", 0.1).alias("low_precision")
).show()
# Результат:
# +------------+---------------+-------------+
# |default_rsd |high_precision|low_precision|
# +------------+---------------+-------------+
# |10 |10 |10 |
# +------------+---------------+-------------+
Примечания
- Чем меньше значение rsd, тем выше точность, но больше потребление памяти
- Для точного подсчета уникальных значений используйте
countDistinct()
- Для подсчета всех значений используйте
count()
- Для подсчета ненулевых значений используйте
count_if()