Поделиться через


Агрегатная функция approx_count_distinct

Область применения: флажок Databricks SQL флажок Databricks Runtime

Возвращает предполагаемое количество уникальных значений в expr в пределах группы.

Реализация использует плотную версию алгоритма HyperLogLog++ (HLL++), состояние алгоритма оценки кратности искусства.

Результаты точны в значении по умолчанию от 5%, которое является производным от значения максимального относительного стандартного отклонения, хотя это можно настроить с relativeSD параметром, как упоминалось ниже.

Синтаксис

approx_count_distinct(expr[, relativeSD]) [FILTER ( WHERE cond ) ]

Эту функцию также можно вызвать как функцию окна с помощью OVER предложения.

Аргументы

  • expr: может быть любого типа, для которого определена эквивалентность.
  • relativeSD: определяет максимально допустимое относительное стандартное отклонение.
  • cond: необязательное логическое выражение для фильтрации строк, используемых для агрегирования.

Возвраты

Значение BIGINT.

Примеры

> SELECT approx_count_distinct(col1) FROM VALUES (1), (1), (2), (2), (3) tab(col1);
 3

> SELECT approx_count_distinct(col1) FILTER(WHERE col2 = 10)
    FROM VALUES (1, 10), (1, 10), (2, 10), (2, 10), (3, 10), (1, 12) AS tab(col1, col2);
 3