当前位置: 首页 > news >正文

Doris多维分析-详细介绍分析

1. 多维分析是什么

多维分析行业内也叫群切,就是从多个不同维度(地域、机型、页面、时间等)对指标(访问次数、人数、会话时长等)做聚合统计,用来做多张运营报表。

  • 维度:分析的角度(省份、城市、手机型号、入口页、性别、班级等)
  • 指标:统计出来的数值(会话总次数、访问人数、平均会话时长、总销售额等)

传统写法:有多少种维度组合,就要写多少条GROUP BYSQL,重复代码多、维护麻烦。于是诞生三个高阶聚合函数:GROUPING SETSROLLUPCUBE,一条 SQL 一次性算出所有需要的维度组合结果。常见工具:Hive/SparkSQL、Apache Doris、Kylin(预计算多维立方体引擎)。

2. 流量多维分析业务场景举例

围绕用户流量行为,从不同维度组合统计流量核心指标:

  1. 地域维度:省份、城市
  2. 设备维度:手机型号
  3. 行为维度:入口页面
  4. 核心指标:会话总次数、访问人数、平均每人会话数、会话总时长、平均会话时长

业务难点:入口页无法直接取字段,需要从会话第一条eventid=pageView事件中提取首次访问的 URL 作为入口页。

3. 三个多维聚合函数核心作用

  1. GROUPING SETS:自定义需要哪些维度组合,只计算你指定的分组
  2. ROLLUP:层级上卷聚合,从细粒度逐级汇总到粗粒度,类似 “逐层向上汇总”
  3. CUBE:全维度交叉聚合,所有维度自由两两、多两组合,生成所有可能的维度组合结果

4. 开发价值

提前梳理所有报表需要的维度组合,用一个 SQL 算出全部结果,定时调度落地,不用重复写几十条分组 SQL,大幅精简代码。


三大多维函数详细讲解(Doris 实操版)

前置基础概念

1. 维度 & 指标举例

表:用户访问流量表维度:省份、城市、手机型号指标:会话次数、访问人数

  • 单维度:只按省份统计
  • 多维度:省份 + 城市、省份 + 手机型号
  • 总计:全表所有数据汇总

2. GROUPING SETS(自定义维度组合)

作用

手动指定你需要哪几组维度组合,只计算你配置的分组,不多算冗余数据。相当于把多条GROUP BY合并成一条 SQL。

示例

需要三种统计:

  1. 按省份分组
  2. 按省份、城市分组
  3. 全表总访问量
SELECT province,city,COUNT(session_id) AS visit_cnt FROM user_flow GROUP BY GROUPING SETS ( (province), (province,city), () );
  • ()代表不分组,全局聚合,求总计

适用场景:报表需要的维度组合零散,不需要全部层级 / 全部交叉,精准按需计算。


3. ROLLUP:层级上卷(爬楼梯式逐级汇总)

核心规则

ROLLUP(A,B,C)遵循从最细粒度 → 逐级向上汇总的层级顺序:

  1. (A,B,C) 最细粒度分组
  2. (A,B) 向上一级汇总
  3. (A) 再向上一级汇总
  4. () 全局总计

为什么没有(B,C)?

ROLLUP 严格遵循维度传入的先后层级顺序,只做「从左往右逐层去掉最右侧维度」向上汇总,不会打乱维度顺序、不会从中间截取维度组合。

想要(B,C)这类跨层级维度组合,只能用 GROUPING SETS 或 CUBE。

业务场景:地域层级汇总(省→市→区县)

需求:统计各区县、各市、各省、全国总访问人数

SELECT province,city,district,COUNT(user_id) AS user_cnt FROM user_flow GROUP BY ROLLUP(province,city,district);

等价于:

GROUP BY GROUPING SETS( (province,city,district), (province,city), (province), () )

特点

  1. 维度有明确先后层级关系:省包含市、市包含区县,不能乱序
  2. 只做从上到下的层级汇总,不会颠倒维度交叉组合
  3. 适合:地区层级、时间层级(年→季→月→日)、部门层级报表

你文中 Doris 示例解析

SELECT city,type,type_msg, sum(amount) FROM huiyuan_msg GROUP BY ROLLUP(city,type,type_msg);

生成分组:

  1. city+type+type_msg
  2. city+type
  3. city
  4. 全局汇总

4. CUBE:全维度交叉立方体(所有组合全部计算)

核心规则

CUBE(A,B)会生成所有维度的任意组合,不限制层级顺序,全部交叉统计。

CUBE(city,type)等价于 4 组维度:

  1. city + type
  2. city
  3. type
  4. 全局总计

Doris 示例

SELECT city,type, sum(amount) FROM huiyuan_msg GROUP BY CUBE(city,type);

特点

  1. 维度之间没有层级从属关系,可以任意交叉
  2. 会生成所有维度排列组合,结果数据量比 ROLLUP 多
  3. 适用:需要做多维度交叉分析,比如省份 × 机型、省份 × 入口页、机型 × 入口页所有组合报表

ROLLUP 和 CUBE 核心区别

  1. ROLLUP:有层级,从上往下逐级汇总,维度有序,结果少例:省、市、区县,只能向上汇总,不会单独按市汇总全国
  2. CUBE:无层级,所有维度自由交叉排列,全部组合都计算,结果多例:省份、手机型号,既可以省 + 机型,也可以单独按机型全局统计

三者关系梳理

  1. GROUPING SETS:手动自定义分组,灵活可控,想算哪几组就写哪几组
  2. ROLLUP:特殊的 GROUPING SETS,按维度层级向上汇总,适合层级类维度(地域、时间)
  3. CUBE:特殊的 GROUPING SETS,所有维度全部交叉组合,适合多维度交叉分析

选择建议

  1. 维度存在层级(年 / 月 / 日、省 / 市 / 区)→ 用ROLLUP
  2. 多个维度需要任意交叉组合 → 用CUBE
  3. 只需要零散几个特定维度组合 → 用GROUPING SETS

配套业务补充说明

  1. Kylin(麒麟)多维预计算引擎,提前把所有 CUBE 维度组合结果算好落地,前端查询直接读预计算结果,适合超大规模离线多维报表查询加速。Doris 本身可以实时多维聚合,实时场景优先 Doris,超大离线预计算场景用 Kylin。

  2. 流量分析难点:入口页提取入口页不能直接作为维度字段,需要先对同一个会话下的所有页面浏览事件排序,取会话第一条 pageView 事件的 url 作为该会话的入口页,再基于加工后的入口页维度做多维聚合。

  3. 工程化落地方式业务梳理全部维度组合 → 使用 ROLLUP/CUBE 单条 SQL 一次性计算所有报表指标 → 结果写入结果表 → 配置定时任务每日调度,报表直接查询结果表即可。

背诵总结

  1. 多维分析(群切):多维度聚合统计业务指标,传统 GROUP BY 需要多条 SQL,可用三个高阶函数优化。
  2. GROUPING SETS:自定义指定维度组合,按需聚合。
  3. ROLLUP:层级上卷聚合,适用于省市区、年月日这类有从属层级的维度,逐级向上汇总。
  4. CUBE:全维度交叉聚合,所有维度任意组合,适合无层级多维度交叉分析。
  5. 常用引擎:Hive/SparkSQL、Doris 实时多维分析,Kylin 用于多维预计算加速查询。
http://www.jsqmd.com/news/1082190/

相关文章:

  • 如何专业地移除Windows中的Microsoft Edge浏览器?EdgeRemover工具完整指南
  • JiYuTrainer终极破解指南:3分钟轻松解除极域电子教室限制
  • 九大网盘一键直链下载:告别限速烦恼的完整解决方案
  • 如何提高AI生成测试用例的质量,我总结了这套思路...
  • NMKD Stable Diffusion GUI:免费开源的文本到图像生成终极指南
  • 构建分布式RouterSploit:突破单节点瓶颈,实现协同渗透测试
  • 智慧农业监测系统:4G+GPS+蓝牙技术方案解析
  • 计算机毕业设计之基于微信小程序的桶装水订水系统的设计与实现
  • 终极任务自动化工具:如何实现多平台定时执行的完整指南
  • esp32s3呼吸灯PWM控制
  • 当数据超过百万条后,我终于理解为什么大家都在学Elasticsearch
  • 3步高效部署AICoverGen:智能AI翻唱工具全面指南
  • VMware Unlocker终极指南:3分钟解锁macOS虚拟机隐藏功能
  • 【共创季稿事节】鸿蒙ArkTS粘性标题布局深度解析
  • 海纳AI面试官:重塑餐饮酒旅行业招聘新生态
  • 为什么Fooocus让AI图像生成从复杂工程变为创意表达?
  • 兴盛优选小程序技术架构解析:S2B2C社区电商的实战设计与实现
  • 2026年外贸精准获客平台选型分析:跨境魔方适配B端全场景获客需求
  • QNAP NAS高危漏洞应急响应:SQL注入与路径遍历实战修复指南
  • 厚置备、精简置备、Eager Zeroed Thick、Lazy Zeroed Thick、独立磁盘——VMware虚拟磁盘5大类型核心差异,一文讲透底层机制与恢复风险!
  • 如何构建高性能跨平台抢票工具:Tauri+Rust+Vue技术栈实战指南
  • 解锁游戏资源编辑的终极利器:3分钟上手ExtractorSharp
  • 计算机毕业设计之基于微信小程序的体育健康系统
  • DATAGerry未授权访问漏洞CVE-2024-50967深度剖析与复现指南
  • 如何在3分钟内完成Windows和Office的智能激活:终极免费解决方案指南
  • EdgeRemover:Windows系统管理员的终极武器,如何优雅地掌控Microsoft Edge
  • AI大模型赋能汽车产业数字化转型:小白程序员必收藏!
  • 景区票务系统性价比之王是谁?深度对比5款热门系统
  • 唐山车位划线怎么选?施工材料与服务商挑选全攻略
  • 如何在Windows 10/11上彻底卸载Microsoft Edge:终极解决方案