VIP数据仓库
一对多 Join 为什么会导致指标膨胀?如何避免重复计算
先抓住题目的核心考点,再把答案拆成可复述的面试表达。
16 次浏览2026/8/24
先下定义一句话说清它是什么,面试官先听到结论。
再讲机制拆出关键流程、边界条件和常见坑位。
最后落场景结合生产经验,说出什么时候用、怎么权衡。
题目描述
请回答:一对多 Join 为什么会导致指标膨胀?如何避免重复计算
这是数仓 SQL 和维度建模里非常高频的一道场景题。很多人会回答:“一对多 Join 会把数据变多,所以加个 DISTINCT 就行。”这个回答不够准确。面试官真正想听的是:Join 后一行代表什么?哪一侧的指标被复制了?为什么 GROUP BY 和 SUM(DISTINCT amount) 救不了所有场景?应该在什么粒度预聚合、去重或分摊?
一对多 Join 本身并不是错误。订单关联商品明细,本来就应该得到多行。真正的问题是:结果已经从订单粒度变成订单明细粒度,却仍然把订单粒度的金额按每一行重复累加。
评论
加载中...