Doris专题28-聚合多维分析

一、核心概念对比

ROLLUP(层级汇总)
  • 定义:生成层次化汇总,按指定列顺序从最细粒度逐步汇总到最高层。
  • 适用场景:需逐级汇总的场景,如按时间(年→月→日)、地理(国家→省→市)等维度。
  • 示例 :ROLLUP(YEAR(d_date), MONTH(d_date)) 会生成:
    • 年+月维度(如 2001 年 1 月)
    • 年仅维度(如 2001 年)
    • 总计(所有年份)
CUBE(全组合汇总)
  • 定义:生成所有可能的维度组合汇总,比 ROLLUP 更全面。
  • 适用场景:需分析所有维度组合的场景,如业务分析、市场调查。
  • 示例 :CUBE(YEAR(d_date), i_category) 会生成:
    • 年+品类(如 2001 年 Books)
    • 年仅(2001 年)
    • 品类仅(Books)
    • 总计
GROUPING SETS(自定义组合汇总)
  • 定义:指定特定维度组合进行汇总,比 ROLLUP/CUBE 更灵活。
  • 适用场景:仅需部分维度组合时,避免计算不必要的汇总,提升效率。
  • 示例 :GROUPING SETS((YEAR(d_date), i_category), (YEAR(d_date)), ()) 会生成:
    • 年+品类
    • 年仅
    • 总计

二、关键函数:解决 NULL 值歧义

GROUPING 函数
  • 作用:区分汇总行(由 ROLLUP/CUBE 生成)和原始数据中的 NULL 值。
  • 规则 :
    • 若列是汇总行(如 ROLLUP 生成的"年总计"),返回 1。
    • 若列是原始数据的 NULL 或普通值,返回 0。
  • 示例 :GROUPING(YEAR(d_date)) 可判断"年"列是否为汇总行。
GROUPING_ID 函数
  • 作用:用二进制位标识维度组合,更直观区分汇总层级。
  • 示例 :CUBE(a,b) 的 GROUPING_ID 对应:
    • a,b(明细行)→ 00 → ID=0
    • a(b 汇总)→ 01 → ID=1
    • b(a 汇总)→ 10 → ID=2
    • 总计 → 11 → ID=3

三、语法与示例

ROLLUP 语法
sql 复制代码
SELECT YEAR(d_date), MONTH(d_date), SUM(ss_net_paid)
FROM store_sales
GROUP BY ROLLUP(YEAR(d_date), MONTH(d_date));
  • 结果:包含年+月、年仅、总计三层汇总。
CUBE 语法
sql 复制代码
SELECT YEAR(d_date), i_category, SUM(ss_net_paid)
FROM store_sales
GROUP BY CUBE(YEAR(d_date), i_category);
  • 结果:包含年+品类、年仅、品类仅、总计四层汇总。
GROUPING SETS 语法
sql 复制代码
SELECT YEAR(d_date), i_category, SUM(ss_net_paid)
FROM store_sales
GROUP BY GROUPING SETS(
    (YEAR(d_date), i_category),  -- 年+品类
    (YEAR(d_date)),              -- 年仅
    ()                           -- 总计
);

四、应用场景总结

功能 适用场景 优势
ROLLUP 层级汇总(如时间、地理) 简洁,避免冗余汇总
CUBE 全维度组合分析(如市场调查) 覆盖所有可能组合
GROUPING SETS 自定义部分维度组合(如仅需年+品类) 灵活,减少计算资源消耗

五、注意事项

  • NULL 值处理:汇总行的 NULL 是"虚拟"的(由 ROLLUP/CUBE 生成),需用 GROUPING 函数区分。
  • 性能优化:若仅需部分维度组合,优先用 GROUPING SETS 而非 CUBE,避免计算不必要的汇总。
相关推荐
白帽攻防录10 分钟前
SRC 挖洞:Roundcube 预认证 SQL 注入深度复盘,CVE-2026-48842 preg_replace 转义绕过怎么打穿邮件系统
网络·数据库·sql·网络安全·sql注入
꯭自꯭闭꯭37 分钟前
达梦SQL优化相关
linux·运维·数据库·sql
对空六课1 小时前
支持注意力分析的热力图工具有哪些?
前端·数据库·数据分析
johnsong1 小时前
当决策成为免费商品:思维成本崩溃背后的治理真空
大数据·人工智能
南京码讯光电技术有限公司1 小时前
How to Design an Antenna System for an Industrial WiFi Module
数据库·人工智能
数字新视界2 小时前
动环监控系统优化数据中心管理,提升环境监测与安全效率
大数据·人工智能·数据中心·微模块机房·模块化机房
zhenaibo5212 小时前
如何向导师请教问题,才能得到有效建议?
大数据·人工智能·深度学习
lusklusklusk2 小时前
Oracle数据库基础之2_体系结构
数据库·oracle
生活愉甜3 小时前
森马SEMIR LAB全球首家概念店落地武康路,“WUKANG368”新地标就位
大数据·人工智能
乐迪信息3 小时前
港口船舶逆行怎么管?AI防爆摄像机搭载智能检测算法
大数据·人工智能·深度学习·算法·计算机视觉