HLL_CARDINALITY()¶
从 HLL_ADD_AGG 或 HLL_MERGE_AGG 生成的 HyperLogLog(HLL)草图返回近似去重值个数。相较于精确的 COUNT(DISTINCT),该方法更节省内存,典型误差率约为 1-2%。
函数说明¶
HLL_CARDINALITY() 从 HLL 草图中提取近似基数估算值。该草图必须由 HLL_ADD_AGG() 或 HLL_MERGE_AGG() 生成。
如果草图参数为 NULL,函数返回 NULL。传入非 HLL 草图的 VARBINARY 值可能产生意外结果。
Syntax¶
> HLL_CARDINALITY(sketch)
Arguments¶
参数 |
说明 |
|---|---|
sketch |
必填。一个 |
返回值¶
返回一个整数值,表示估算的去重值个数。如果输入草图为 NULL,则返回 NULL。
Examples¶
DROP DATABASE IF EXISTS dbfuncs;
CREATE DATABASE dbfuncs;
USE dbfuncs;
-- 构建草图并获取基数估算
CREATE TABLE hll_01(dt DATE, user_id INT);
INSERT INTO hll_01 VALUES ('2026-05-01', 1), ('2026-05-01', 1), ('2026-05-01', 2), ('2026-05-02', 2), ('2026-05-02', 3), ('2026-05-02', NULL);
-- 直接从草图获取基数
SELECT HLL_CARDINALITY(HLL_ADD_AGG(user_id)) FROM hll_01;
-- 按天获取基数
SELECT dt, HLL_CARDINALITY(HLL_ADD_AGG(user_id)) FROM hll_01 GROUP BY dt ORDER BY dt;
-- NULL 草图返回 NULL
SELECT HLL_CARDINALITY(NULL);
DROP TABLE hll_01;
DROP DATABASE dbfuncs;