单向筛选下,事实表互不筛选,正数相加必为正。但当报表粒度不一致(如同时展示订单利润与流量会话ID)时,会触发笛卡尔积,导致订单数据被重复匹配。成本被重复累加,汇总利润由正转负。A、B会导致利润同比例放大或虚高;D会导致线性偏差,均不会由正转负。
虽然物理关系是单向的,但报表层面的查询会打破这个限制。如果报表视觉对象(如矩阵表)中同时使用了销售利润(来自订单表)和流量/广告的细粒度字段(如“会话ID”、“广告活动ID”),BI引擎会以最细粒度进行聚合。由于订单表里没有会话ID,引擎会通过共享的“渠道维度”进行虚拟的多对多关联,导致一条订单记录被多条流量/广告记录重复匹配(笛卡尔积)。此时,成本金额可能被重复累加了N次,如果分摊逻辑或度量值编写不当,汇总利润就会被冲减为负数。而订单明细表因为只展示订单粒度,所以看起来每单都盈利。
A错误:如果成本为空,通常按0处理,利润会偏高;如果为负,利润会异常虚高。这两种情况都不会导致“明细正常、汇总为负”的系统性反转。
B错误:题干已明确是“多对一”,即使多对多导致膨胀,销售金额和成本金额通常会同比例放大,利润(差值)依然为正。
D错误:时间筛选错乱通常导致销售金额和成本金额同时被过滤(例如一个选了本月,一个选了上月),产生的利润偏差是线性的,很难精准地导致“每单都盈利但汇总为负”的系统性反转。