Skip to content

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