Skip to content

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() - точный подсчет уникальных значений