Перейти к основному содержимому
Версия: 2.0.x

ds_hll_accumulate

Накапливает значения в скетч HyperLogLog и возвращает сериализованный скетч как VARBINARY. Эта функция является частью семейства функций DataSketches HLL для приблизительного подсчёта уникальных значений.

ds_hll_accumulate создаёт сериализованный скетч HyperLogLog, который можно объединять с другими скетчами с помощью ds_hll_combine и оценивать с помощью ds_hll_estimate.

Основана на Apache DataSketches и обеспечивает высокую точность для приблизительного подсчёта уникальных значений. Для получения дополнительной информации см. HyperLogLog Sketches.

Синтаксис

sketch ds_hll_accumulate(expr)
sketch ds_hll_accumulate(expr, log_k)
sketch ds_hll_accumulate(expr, log_k, tgt_type)

Параметры

  • expr: Выражение для накопления в скетче. Может быть любого типа данных.
  • log_k: Целое число. Диапазон [4, 21]. По умолчанию: 17. Контролирует точность и использование памяти скетча.
  • tgt_type: Допустимые значения: HLL_4, HLL_6 (по умолчанию) и HLL_8. Контролирует целевой тип скетча HyperLogLog.

Возвращаемый тип

Возвращает VARBINARY, содержащий сериализованный скетч HyperLogLog.

Примеры

-- Создание тестовой таблицы
CREATE TABLE t1 (
id BIGINT,
province VARCHAR(64),
age SMALLINT,
dt VARCHAR(10)
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 3;

-- Вставка тестовых данных
INSERT INTO t1 SELECT generate_series, generate_series, generate_series % 100, "2024-07-24"
FROM table(generate_series(1, 1000));

-- Базовое использование с одним аргументом
SELECT ds_hll_accumulate(id) FROM t1;

-- С пользовательским параметром log_k
SELECT ds_hll_accumulate(province, 20) FROM t1;

-- С параметрами log_k и tgt_type
SELECT ds_hll_accumulate(age, 12, "HLL_6") FROM t1;

-- Использование с group by
SELECT dt,
ds_hll_accumulate(id),
ds_hll_accumulate(province, 20),
ds_hll_accumulate(age, 12, "HLL_6"),
ds_hll_accumulate(dt)
FROM t1
GROUP BY dt
ORDER BY 1
LIMIT 3;

Связанные функции

  • ds_hll_combine: Объединяет несколько сериализованных скетчей в один скетч
  • ds_hll_estimate: Оценивает количество уникальных значений из сериализованного скетча
  • ds_hll_count_distinct: Функция прямого приблизительного подсчёта уникальных значений

Ключевые слова

ds_HLL_ACCUMULATE, HLL, HYPERLOGLOG, APPROXIMATE, DISTINCT, COUNT