网站首页 > 博客文章 正文
一般我们在用户画像根据标签圈选用户时,采用Clickhouse的Bitmap的功能,但是要求UserId是整形,即integer或者bigint,如果遇见超几十亿用户基数且ID值很大就很麻烦。
要么做一次ID的映射mapping,要么等着计算引擎支持
例如Clickhouse的Int数据类型表示范围:
Int32的最大表示在21亿+,UInt32最大表示42亿+
在Clickhouse的老版本中bitmap计算例如2021.1的版本仅支持到UInt32,也就是最大的UserID的值为42亿+,超过则在Bitmap是溢出的,只能转换为分群集合为数组array在判断,如下:
—注意规避问题
select
--仅仅支持UInt32(42亿+整型,int32 21亿+)
bitmapContains(groupBitmapMergeState(uv),toUInt32(9379715501)) as is_exists,
has(bitmapToArray(groupBitmapMergeState(uv)),9379715501) as array_is_exists
from user_tags_bitmap where tag='user_belong_m' and value='2004718' ;
—clickhouse最新版本2023.11.30,支持UInt64,表示范围就“贼大”20位数
SELECT
bitmapBuild([4079715501,9379715501, 9223372036854775807,17023372036854775807]) AS res,
toTypeName(res),
bitmapContains(res,toUInt64(9379715501)) as is_exists,
bitmapContains(res,toUInt64(17023372036854775807)) as is_exists_1,
bitmapContains(res,toUInt64(17123372036854775807)) as is_exists_2,
has(bitmapToArray(res),9223372036854775807) as array_is_exists
插曲:引入Presto的bigint的数据范围,是不是超出范围报错
#捕获异常try_cast
猜你喜欢
- 2024-10-17 Uber如何使用ClickHouse建立日志分析平台?
- 2024-10-17 ClickHouse内核分析-MergeTree的存储结构和查询加速
- 2024-10-17 clickhouse ----入门(clickhouse-server)
- 2024-10-17 ClickHouse 查询优化(clickhouse join优化)
- 2024-10-17 clickhouse的技术文档--后面有安装文档
- 2024-10-17 使用Canal实现ClickHouse实时同步MySQL数据
- 2024-10-17 性能提高15倍!只是把MySQL换成了ClickHouse
- 2024-10-17 大数据ClickHouse进阶(十八):数据字典类型
- 2024-10-17 Clickhouse单机部署(clickhouse django)
- 2024-10-17 Clickhouse系列-第二节-基本原理(clickhouse ui)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)