ClickHouse的近似值计算
2021-07-27 本文已影响0人
代码足迹
最近在使用基于Bitmap来计算人群,发现预估出来的人群数有出入。
使用的是以下的SQL
select uniqArray(bitmapToArray(btm_ids)) FROM testlabel
后来经过查资料发现,uniqArray(array_xxx) 相当于 uniq(arrayJoin(array_xxx))
而uniq是一个近似数量的计算,所以计算出来的结果有时会有出入,但不会差很远。
当然如果只是需要计算人群的数量有个更方便的方法:
select toTypeName(btm_ids), bitmapCardinality(btm_ids) FROM testlabel