尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Doris学习笔记

Doris学习笔记
📅 发布时间:2026/6/18 12:21:13

1. 三种表模型:明细模型、聚合模型、唯一模型

明细模型建表语句:

CREATE TABLE IF NOT EXISTS example_db.detail_log
(`user_id` INT NOT NULL COMMENT "用户ID",`event_time` DATETIME NOT NULL COMMENT "事件时间",`event_type` VARCHAR(32) COMMENT "事件类型",`city` VARCHAR(64) COMMENT "所在城市",`device` VARCHAR(64) COMMENT "设备型号"
)
ENGINE=OLAP
DUPLICATE KEY(`user_id`, `event_time`) -- 指定明细模型(通过DUPLICATE KEY)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`user_id`) BUCKETS 10; -- 分桶

适用场景:日志数据分析、用户行为分析、需要查询原始数据的场景

聚合模型建表语句:

CREATE TABLE IF NOT EXISTS example_db.aggregate_page_view
(`date` DATE NOT NULL COMMENT "日期",`page_id` INT NOT NULL COMMENT "页面ID",`user_id` BIGINT SUM DEFAULT "0" COMMENT "访问用户数,求SUM相当于PV",`city` VARCHAR(64) REPLACE DEFAULT "" COMMENT "城市,取最后一条",`pv` BIGINT SUM DEFAULT "0" COMMENT "总访问次数"
)
ENGINE=OLAP
AGGREGATE KEY(`date`, `page_id`, `user_id`) -- 指定聚合模型
COMMENT "OLAP"
DISTRIBUTED BY HASH(`page_id`) BUCKETS 10;
CREATE TABLE example_db.aggregate_uv
(`date` DATE NOT NULL,`page_id` INT NOT NULL,`user_id_bitmap` BITMAP BITMAP_UNION NOT NULL
)
ENGINE=OLAP
AGGREGATE KEY(`date`, `page_id`)
DISTRIBUTED BY HASH(`page_id`) BUCKETS 10;

  

数据导入

假设原始数据是这样的:

date       | page_id | user_id
2024-01-01 | 1       | 1001
2024-01-01 | 1       | 1002  
2024-01-01 | 1       | 1001  -- 用户1001重复访问
2024-01-01 | 2       | 1001

导入后,表中存储的是:

date       | page_id | user_id_bitmap (实际存储的是压缩位图)
2024-01-01 | 1       | {1001, 1002}    -- 自动去重,只有2个用户
2024-01-01 | 2       | {1001}          -- 1个用户

查询使用

-- 计算每个页面的独立访客数(UV)
SELECT date,page_id,BITMAP_UNION_COUNT(user_id_bitmap) as uv
FROM example_db.aggregate_uv
GROUP BY date, page_id;-- 结果:
-- date       | page_id | uv
-- 2024-01-01 | 1       | 2
-- 2024-01-01 | 2       | 1-- 计算总的独立访客数
SELECT BITMAP_UNION_COUNT(user_id_bitmap) as total_uv 
FROM example_db.aggregate_uv;-- 计算特定页面的UV
SELECT BITMAP_UNION_COUNT(user_id_bitmap) as uv
FROM example_db.aggregate_uv 
WHERE page_id = 1;

聚合模型适用场景:报表统计、实时看板(sum,max,min 等)

3、唯一模型建表语句:

create table update_orders(`order_id` bigint not null comment "订单ID",`order_status` int not null comment "订单状态",`user_id` int not null comment "用户ID",`amount` int comment "订单金额",`update_time` date not null comment "更新时间" 
)
ENGINE=OLAP
UNIQUE KEY(`order_id`) 
DISTRIBUTED KEY HASH(`order_id`) BUCKETS 10;

适用场景:状态频繁变更的业务表(如订单、用户信息)。

相关新闻

  • Spring AI Alibaba 项目源码学习(十一)-Hook
  • ftp,sftp,scp,tftp几种简单对比,以及python实现ftp功能
  • 实用指南:深入解析音频编解码器(Audio CODEC):硬件、接口与驱动开发

最新新闻

  • NETCANFD以太网转CANFD设备:工业通信互联互通的硬核解决方案
  • 实战解析:Hunyuan3D-2本地部署与云端方案深度对比,如何选择最适合你的3D生成环境?
  • HDLC总线模式冲突检测原理与MPC857T PowerQUICC实战配置
  • 软考备考资料分享
  • 如何免费搭建个人专属媒体中心?Jellyfin完整使用指南
  • SST39VF/LF并行NOR Flash在嵌入式低功耗高可靠系统中的应用与实战

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号