doris数据模型,06-Aggregate(聚合模型)
2023-12-26 07:02:09
聚合模型的特点
将表中的列分为Key和Value。
Key是数据的维度列,比如时间,地区等等。key相同时会发生聚合。
Value是数据的指标列,比如点击量,花费等等。
每个指标列还会有自己的聚合函数,如:sum,min,max,bitmap_union等。数据会根据维度列进行分组,并对指标列进行聚合。
在3中机制下会发生聚合:
- 导入数据(insert, load等)
- BE内部Compaction时
- 查询数据
预聚合
导入数据时,发生的聚合,会丢失原始数据
表如下:
CREATE TABLE if not exists test_db.example_site_visit
(
`user` id LARGEINT NOT NULL COMMENT "用户id",
`date` DATE NOT NULL COMMENT "数据灌入日期时间",
`city` VARCHAR(20) COMMENT "用户所在城市",
`age` SMALLINT COMMENT "用户年龄",
`sex` TINYINT COMMENT"用户性别",
`last_visit_date` DATETIME REPLACE default "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间",
`cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费",
`max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间",
`min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间",
)
AGGREGATE KEY(`user_id`, `date` ,`city` ,`age` ,`sex`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 10;
REPLACE: key相同时,value替换成新插入的值
SUM:key相同时,value更新成求和结果
MAX:key相同时,value更新成保留最大值
MIN:key相同时,value更新成保留最小值
插入数据
前面6行数据时没有key相同的,所以插入后会有6条记录
当再次插入第七行数据时,第七行的key与第一行的key相同,因此发生聚合。
阻止预聚合
在表中增加插入记录时间字段insert_time,并且将该insert_time增加到key里,即可保证每条数据的key都不相同。
文章来源:https://blog.csdn.net/cin_ie/article/details/135210612
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!