approx_count_distinct(col, rsd)
Описание
Функция approx_count_distinct() возвращает приблизительное количество уникальных значений в столбце. Это более эффективная альтернатива count(distinct), особенно для больших наборов данных.
Параметры
col: Column - столбец, для которого нужно подсчитать уникальные значенияrsd: float (опционально) - максимальная относительная стандартная ошибка (по умолчанию 0.05)
Возвращаемое значение
Column - приблизительное количество уникальных значений
Пример использования
from pyspark.sql import SparkSession
from pyspark.sql.functions import approx_count_distinct
# Создаем SparkSession
spark = SparkSession.builder.appName("approx_count_distinct_example").getOrCreate()
# Создаем DataFrame с данными
data = [(1,), (2,), (3,), (1,), (2,), (4,), (5,)]
df = spark.createDataFrame(data, ["value"])
# Подсчитываем приблизительное количество уникальных значений
result = df.select(
    approx_count_distinct("value").alias("approx_distinct_count"),
    approx_count_distinct("value", 0.01).alias("more_precise_count")
)
result.show()
# Результат:
# +-------------------+-------------------+
# |approx_distinct_count|more_precise_count|
# +-------------------+-------------------+
# |                  5|                 5|
# +-------------------+-------------------+
 Примечания
- Использует алгоритм HyperLogLog для приблизительного подсчета
 - Чем меньше значение rsd, тем точнее результат, но больше потребление памяти
 - Полезно для:
 - Больших наборов данных
 - Приблизительной аналитики
 - Оптимизации производительности
 - Связанные функции:
 count()- точный подсчетcount_distinct()- точный подсчет уникальных значений