一、OLAP 与增量计算概述

聊到 OLAP 的增量计算,我得先说说自己刚入行时踩过的坑。那时候我接手一个电商报表系统,每天凌晨跑全量重算,数据量一上来就跑不完。老板早上要看报表,我凌晨三点还在盯着进度条发呆。后来才意识到——增量计算才是解决这类问题的钥匙。

1.1 OLAP 基本概念

OLAP,说白了就是让业务人员能灵活地分析多维数据。你想想看,一个销售经理想按地区、按时间、按产品类别看销售额,传统数据库写 SQL 能写到怀疑人生。OLAP 就是把这个过程变得像点鼠标一样简单。

我个人习惯把 OLAP 的核心要素归纳为三点:

  • 多维模型:维度(时间、地区、品类) + 度量(销售额、订单量)
  • 预聚合:提前算好各层级的汇总结果,查询时直接取
  • 快速响应:秒级甚至毫秒级返回分析结果

我在项目中遇到过最典型的场景:一张订单事实表每天新增 500 万行,全量重算要跑 4 小时。业务等不了,我也等不了。这时候增量计算就派上用场了。

1.2 增量计算的定义与价值

增量计算,就是只处理新增或变化的数据,而不是每次都从头算一遍。

举个例子:

  • 全量计算:每天把过去 3 年的订单全部重算一遍
  • 增量计算:只算昨天新增的 500 万订单,合并到已有结果上

核心价值:计算量从 O(N) 降到 O(ΔN),N 是总数据量,ΔN 是增量数据量。当 N 远大于 ΔN 时,性能提升是数量级的。

我记得有一次给客户做技术方案,他们的日增量只有全量的 1/200。改用增量计算后,ETL 时间从 6 小时缩到 8 分钟。客户当场就问:「之前怎么没人告诉我这个?」

1.3 全量计算 vs 增量计算对比

这里我整理了一张对比表,你一看就明白:

对比维度 全量计算 增量计算
计算范围 全部历史数据 仅新增/变化数据
资源消耗 高(CPU、内存、IO 全拉满) 低(只处理小部分数据)
执行时间 随数据量线性增长 基本稳定,不受历史数据影响
数据一致性 天然一致(全部重算) 需要额外机制保证(如幂等、去重)
实现复杂度 低(简单粗暴) 高(需要处理边界情况)
适合场景 小数据量、首次加载、数据修复 大数据量、日常更新、实时场景

注意:我曾经在一个项目里全量增量混着用,结果增量跑完发现历史数据有修正,导致报表对不上。后来我定了个规矩——增量计算必须配合幂等设计和定期全量校验,缺一不可。

1.4 适用场景分析

不是所有场景都适合用增量计算。我根据自己的实战经验,把场景分成三类:

✅ 强烈推荐用增量

  • 日增量巨大的事实表:比如电商订单、用户行为日志
  • 维度变化缓慢:比如产品分类、地区信息,一个月改不了几次
  • 对时效性要求高:比如实时大屏、运营看板

⚠️ 谨慎使用增量

  • 维度频繁变化:比如标签系统,一天改几千次,增量逻辑会非常复杂
  • 需要精确回溯:比如财务对账,差一分钱都不行
  • 数据源不可靠:经常漏数据、重复数据,增量处理起来很头疼

❌ 不建议用增量

  • 小数据量:几百万行级别的表,全量跑也就几分钟,没必要折腾
  • 一次性分析:跑完就扔,不需要持续更新
  • 数据质量极差:先解决数据治理问题,再谈增量计算

我的经验:刚开始做增量时,别想着一步到位。先跑全量,再在边上跑增量做对比验证。等跑通一个月没问题了,再切到纯增量模式。这个「双跑期」能帮你省掉很多排查问题的精力。

1.5 本章知识体系总览

下面这张图把本章的核心脉络串起来了,你可以用它来建立整体认知:

OLAP增量计算知识体系 OLAP 增量计算知识体系 OLAP 多维分析 核心概念 多维模型(维度+度量) 预聚合与快速响应 计算方式对比 全量计算 增量计算 O(N) vs O(ΔN) 性能差异 适用场景 强烈推荐(大表+稳定维度) 谨慎使用(频繁变化+对账) 增量计算核心价值:降本增效 只处理变化的数据,避免全量重算 避坑提醒 增量计算必须配合幂等设计 + 定期全量校验

这张图把本章的核心脉络串起来了。从 OLAP 多维分析出发,左边是核心概念,中间是计算方式对比,右边是适用场景,底部是增量计算的核心价值和避坑提醒。后面的章节会围绕这张图逐层展开。