VIP数据仓库

一对多 Join 为什么会导致指标膨胀?如何避免重复计算

先抓住题目的核心考点,再把答案拆成可复述的面试表达。

16 次浏览2026/8/24
先下定义一句话说清它是什么,面试官先听到结论。
再讲机制拆出关键流程、边界条件和常见坑位。
最后落场景结合生产经验,说出什么时候用、怎么权衡。

题目描述

请回答:一对多 Join 为什么会导致指标膨胀?如何避免重复计算

这是数仓 SQL 和维度建模里非常高频的一道场景题。很多人会回答:“一对多 Join 会把数据变多,所以加个 DISTINCT 就行。”这个回答不够准确。面试官真正想听的是:Join 后一行代表什么?哪一侧的指标被复制了?为什么 GROUP BYSUM(DISTINCT amount) 救不了所有场景?应该在什么粒度预聚合、去重或分摊?

一对多 Join 本身并不是错误。订单关联商品明细,本来就应该得到多行。真正的问题是:结果已经从订单粒度变成订单明细粒度,却仍然把订单粒度的金额按每一行重复累加。

参考答案

评论

登录 后参与评论

加载中...