Doris

Aggregate 模型

相同key的数据进行自动聚合的表模型。表中的列按照是否设置了 AggregationType,分为 Key(维度列)和 Value(指标列),没有设置 AggregationType 的称为 Key,设置了 AggregationType 的称为 Value。当我们导入数据时,对于 Key 列相同的行会聚合成一行,而 Value 列会按照设置的AggregationType 进行聚合。AggregationType 目前有以下四种聚合方式:

SUM:求和,多行的 Value 进行累加。

REPLACE:替代,下一批数据中的 Value 会替换之前导入过的行中的 Value。

REPLACE_IF_NOT_NULL :当遇到 null 值则不更新。

MAX:保留最大值。

MIN:保留最小值。

有如下场景:需要创建一个表,来记录公司每个用户的每一次消费行为信息,有如下字段

 

而且,公司对这份数据,特别关心一个报表 

每一个用户最后一次访问我们页面的时间,用户消费的总金额,用户停留在我们页面上的最大最小时长

 

SQL
Select
    user_id,data,city,age,gender,
    max(visit_data) as last_visit_data,
    sum(cost) as cost,
    max(dwell_time) as max_dwell_time,
    min(dwell_time) as min_dwell_time
From  t
Group by  user_id,data,city,age,gender  --
对应的是聚合模型型key

聚合模型

SQL
-- 这是一个用户消费和行为记录的数据表
CREATE TABLE IF NOT EXISTS test.ex_user
(
 `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 "
用户最小停留时间"
 )
ENGINE=olap
AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
--
分区
-- 分桶
DISTRIBUTED BY HASH(`user_id`) BUCKETS 1;

向表中插入部分数据

SQL
insert into test.ex_user values\
(10000,'2017-10-01','
北京',20,0,'2017-10-01 06:00:00',20,10,10),\
(10000,'2017-10-01','
北京',20,0,'2017-10-01 07:00:00',15,2,2),\
(10001,'2017-10-01','
北京',30,1,'2017-10-01 17:05:45',2,22,22),\
(10002,'2017-10-02','
上海',20,1,'2017-10-02 12:59:12',200,5,5),\
(10003,'2017-10-02','
广州',32,0,'2017-10-02 11:20:00',30,11,11),\
(10004,'2017-10-01','
深圳',35,0,'2017-10-01 10:00:15',100,3,3),\
(10004,'2017-10-03','
深圳',35,0,'2017-10-03 10:20:22',11,6,6);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值