doris数据模型,06-Aggregate(聚合模型)

发布时间:2023年12月26日

聚合模型的特点

将表中的列分为KeyValue
Key是数据的维度列,比如时间,地区等等。key相同时会发生聚合。
Value是数据的指标列,比如点击量,花费等等。
每个指标列还会有自己的聚合函数,如:sum,min,max,bitmap_union等。数据会根据维度列进行分组,并对指标列进行聚合。

在3中机制下会发生聚合:

  1. 导入数据(insert, load等)
  2. BE内部Compaction时
  3. 查询数据

预聚合

导入数据时,发生的聚合,会丢失原始数据

表如下:

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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。