3.3 数据表模型
Doris 的数据模型主要分为3类:
• Aggregate 聚合模型
• Unique 唯一模型
• Duplicate 明细模型
# 3.3.1 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
Group by user_id,data,city,age,gender – 对应的是聚合模型型key
聚合模型
点击图片可查看完整电子表格
sql示例:
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,