持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情
l 演示二:保留明细数据
| 操作步骤 | 说明 |
|---|---|
| 1 | 创建doris表 |
CREATE TABLE IF NOT EXISTS test_db . example_site_visit2**(** user_id LARGEINT NOT NULL COMMENT "用户id" , **date** DATE NOT NULL COMMENT "数据灌入日期时间" , **timestamp** DATETIME 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** , **timestamp** , city , age , sex **)**DISTRIBUTED BY HASH ( user_id ) BUCKETS 10 ; | |
| 2 | 插入数据 |
| insert into test_db . example_site_visit2 values ( 10000 , '2017-10-01' , '2017-10-01 08:00:05' , '北京' , 20 , 0 , '2017-10-01 06:00:00' , 20 , 10 , 10 **);**insert into test_db . example_site_visit2 values ( 10000 , '2017-10-01' , '2017-10-01 09:00:05' , '北京' , 20 , 0 , '2017-10-01 07:00:00' , 15 , 2 , 2 **);**insert into test_db . example_site_visit2 values ( 10001 , '2017-10-01' , '2017-10-01 18:12:10' , '北京' , 30 , 1 , '2017-10-01 17:05:45' , 2 , 22 , 22 **);**insert into test_db . example_site_visit2 values ( 10002 , '2017-10-02' , '2017-10-02 13:10:00' , '上海' , 20 , 1 , '2017-10-02 12:59:12' , 200 , 5 , 5 **);**insert into test_db . example_site_visit2 values ( 10003 , '2017-10-02' , '2017-10-02 13:15:00' , '广州' , 32 , 0 , '2017-10-02 11:20:00' , 30 , 11 , 11 **);**insert into test_db . example_site_visit2 values ( 10004 , '2017-10-01' , '2017-10-01 12:12:48' , '深圳' , 35 , 0 , '2017-10-01 10:00:15' , 100 , 3 , 3 **);**insert into test_db . example_site_visit2 values ( 10004 , '2017-10-03' , '2017-10-03 12:38:20' , '深圳' , 35 , 0 , '2017-10-03 10:20:22' , 11 , 6 , 6 ); | |
| 3 | select ***** from test_db . example_site_visit2 ; |
| 我们可以看到,存储的数据,和导入数据完全一样,没有发生任何聚合。这是因为,这批数据中,因为加入了 timestamp 列,所有行的 Key 都不完全相同。也就是说,只要保证导入的数据中,每一行的 Key 都不完全相同,那么即使在聚合模型下,Doris 也可以保存完整的明细数据。 |
索引和 Rollup
ROLLUP 在多维分析中是“上卷”的意思,即将数据按某种指定的粒度进行进一步聚合。
Rollup可以理解为表的一个物化索引结构,Rollup可以调整列的顺序以增加前缀索引的命中率,也可以减少key列以增加数据的聚合度。