聚合的"先后顺序",到底在说什么?
这节用最直白的方式说明白:有些问题必须"先算这一步,再算那一步"。跳步骤,结论就会错。
先对齐术语(对应考试大纲 4.3)
- 4.3.1 度量的默认聚合:如 SUM、AVG、MIN、MAX(Tableau 默认对度量会做聚合)。
- 4.3.2 维度增加后的变化:往视图里加维度,就等于让聚合"更细",同一个度量会被分到更多小组里再聚一次。
一段聚合:每个区域的"订单平均值"怎么来?
目标:用 Sample Superstore 求"每个区域的订单平均值"。
- 做法:把每个订单的金额加总(按订单聚合一次),再在区域层级上算平均。
- 直觉版:区域 A 有 100 单、总销售 10,000,A 的订单平均值 = 10,000 ÷ 100 = 100。
- 关键点:这是"先按订单聚合,再按区域聚合"的两层含义,但整体只经历了一次"核心聚合思想"。
二段聚合:每个区域"订单价值的中位数"
把问题升级:不看平均,改看"中位数"。
- 步骤 1(第 1 段):先算"每一单的金额"(或确认每单已经是明细金额)。
- 步骤 2(第 2 段):在"订单"这一层上,求出该区域所有订单金额的中位数。
- 为什么要分段:中位数对"顺序/位次"敏感,必须先把订单这一层算清楚,再在"区域"这一层做中位数,否则就会把不同层级的值混在一起,产生错误中位数。
三段聚合:区域中位数之间再比较最大/最小
再升级:在所有区域的"订单金额中位数"当中,找最高与最低。
- 步骤 1:得到"每单金额"。
- 步骤 2:在每个区域里,算"订单金额的中位数"。
- 步骤 3:把所有区域的"中位数"拿出来,再做一次聚合(比如找最大/最小、再求平均等)。
- 类比(更好懂):
- 校长看全校模拟考:
1) 先算"每个学生的总分"。
2) 再算"每个班的总分中位数"。
3) 最后比较"各班中位数",看哪个班最高、哪个班最低。
为什么一定要按顺序来?
一句话总结:必须拆开按顺序做的事,绝对不能一口气在一次聚合里"算出三层含义"。
- 错误心态:写一个"神级聚合公式"一步到位。
- 正确做法:
- 明确每一层的"对象"和"层级"(订单 → 区域 → 全区域)。
- 每一层都产生一个"中间结果",供下一层继续聚合。
- 心法:面对复杂问题,先问自己"这题有几层?"然后按层级逐步产出中间结果。
在 Tableau 里怎么落地?(操作心法)
- 分清层级与粒度:
- 视图里多放一个维度,就意味着把上一层的聚合"拆细"。
- 用合适的计算方式:
- 订单层的金额:可以用行级明细或 FIXED LOD 到订单层。
- 区域层的中位数:在区域层做 MEDIAN(基于订单层的结果)。
- 全局比较:再对"区域级中位数"进行 MAX/MIN 等。
- 推荐路径:
1) 行级/订单级结果(或 FIXED [Order ID])
2) 区域级中位数(MEDIAN of Step1)
3) 全局聚合(MAX/MIN/AVG of Step2)
一眼就能记住的结论
- 加维度 = 让聚合更细。
- 中位数/分位数这类统计,必须先把"比较单位"那一层聚对,才能到更高层继续聚。
- 三层问题分三段做;别指望用一次聚合把三层都算完。
思考题:把"按城市求每单金额中位数,再找各省中位数最高的城市"这题,自己画成 3 段流程,试着在 Tableau 里用 LOD + 视图层级实现一遍。