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

ds_hll_estimate

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

ds_hll_estimate принимает VARBINARY сериализованный скетч, созданный ds_hll_accumulate или ds_hll_combine, и возвращает оценочное количество уникальных значений.

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

Синтаксис

bigint ds_hll_estimate(sketch)

Параметры

  • sketch: Столбец VARBINARY, содержащий сериализованные скетчи HyperLogLog, созданные ds_hll_accumulate или ds_hll_combine.

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

Возвращает BIGINT, представляющий оценочное количество уникальных значений.

Примеры

-- Создание тестовой таблицы
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));

-- Создание таблицы для хранения скетчей
CREATE TABLE t2 (
`id` bigint,
`dt` varchar(10),
`ds_id` binary,
`ds_province` binary,
`ds_age` binary,
`ds_dt` binary
) ENGINE=OLAP
DISTRIBUTED BY HASH(id) BUCKETS 3;

-- Сохранение скетчей, созданных ds_hll_accumulate
INSERT INTO t2 SELECT id, dt,
ds_hll_accumulate(id),
ds_hll_accumulate(province, 10),
ds_hll_accumulate(age, 20, "HLL_6"),
ds_hll_accumulate(dt, 10, "HLL_8")
FROM t1;

-- Оценка количества уникальных значений с группировкой по дате
SELECT dt,
ds_hll_estimate(ds_id),
ds_hll_estimate(ds_province),
ds_hll_estimate(ds_age),
ds_hll_estimate(ds_dt)
FROM t2
GROUP BY dt
ORDER BY 1
LIMIT 3;

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

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

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

ds_HLL_ESTIMATE, HLL, HYPERLOGLOG, APPROXIMATE, DISTINCT, COUNT, ESTIMATE