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


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

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

Эта функция использует алгоритм HyperLog для подсчета вероятностного приближения числа уникальных значений в заданном столбце и выводит результат в виде двоичного представления, известного как буфер эскиза. Это двоичное представление подходит для сохраняемости.

Запросы могут использовать результирующие буферы для вычисления приблизительных уникальных счетчиков с помощью функции hll_sketch_estimate .

Функции hll_union и hll_union_agg также могут объединять эскизы, используя и объединяя эти буферы в качестве входных данных.

Реализация использует библиотеку Apache Datasketches. Дополнительные сведения см. в HLL.

Синтаксис

hll_sketch_agg ( expr [, lgConfigK ] )

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

Аргументы

  • expr: выражение типа INT, BIGINTSTRINGили BINARY против которого будет выполняться уникальное подсчет.
  • lgConfigK: необязательная INT константа от 4 до 21 включительно с значением по умолчанию 12. Log-base-2 из K, где K — это количество контейнеров или слотов для эскиза.

Любой NULL из не expr учитывается.

Возвраты

Не буферNULLBINARY, содержащий эскиз HyperLogLog, вычисляемый в результате использования и агрегирования всех входных значений в группе агрегирования.

Примеры

> SELECT hll_sketch_estimate(hll_sketch_agg(col, 12))
    FROM VALUES (1), (1), (2), (2), (3) tab(col);
  3

> SELECT hll_sketch_estimate(hll_sketch_agg(col))
    FROM VALUES (1), (1), (2), (2), (3) tab(col);
  3