ds_hll_combine
将多个序列化的 HyperLogLog 草图合并为单个序列化草图。此函数是 DataSketches HLL 近似去重计数函数族的一部分。
ds_hll_combine
接受由 ds_hll_accumulate
创建的多个 VARBINARY 序列化草图,并将它们合并为表示所有不同值并集的单个草图。
它基于 Apache DataSketches,为近似去重计数提供高精度。更多信息,请参见 HyperLogLog 草图。
语法
sketch ds_hll_combine(sketch)
参数
sketch
: 包含序列化 HyperLogLog 草图的 VARBINARY 列
返回类型
返回包含合并序列化草图的 VARBINARY。
示例
-- 创建测试表
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 VARBINARY,
ds_province VARBINARY,
ds_age VARBINARY,
ds_dt VARBINARY
)
DUPLICATE KEY(id, dt)
DISTRIBUTED BY HASH(id) BUCKETS 3;
-- 插入草图数据
INSERT INTO t2
SELECT id, dt,
ds_hll_accumulate(id),
ds_hll_accumulate(province, 20),
ds_hll_accumulate(age, 12, "HLL_6"),
ds_hll_accumulate(dt, 10, "HLL_8")
FROM t1;
-- 按日期分组合并草图
SELECT dt,
ds_hll_combine(ds_id),
ds_hll_combine(ds_province),
ds_hll_combine(ds_age),
ds_hll_combine(ds_dt)
FROM t2
GROUP BY dt
ORDER BY 1
LIMIT 3;
相关函数
ds_hll_accumulate
: 将值累积到序列化草图中ds_hll_estimate
: 从序列化草图估算去重计数ds_hll_count_distinct
: 直接近似去重计数函数
关键词
ds_HLL_COMBINE, HLL, HYPERLOGLOG, APPROXIMATE, DISTINCT, COUNT