历史维度的两种回答
01

按当时:订单归属成交时的区域

02

按当前:历史订单归属今天的区域

03

有效期:valid_from / valid_to

04

代理键:区分同一业务对象的多个版本

05

验收:边界日期、迟到数据和回填

一个常见错误:组织调整后,历史业绩也变了

区域、门店负责人、客户等级和商品分类都会变化。若维度表只保存当前值,去年订单在今天查询时会被归到新区域,导致历史报表与当时发布版本不一致。

业务可能同时需要两种答案:按当时组织复盘责任,按当前组织重新看客户资产。模型必须明确支持哪一种,不能让 AI 临时猜测 Join 条件。

SCD Type 1 和 Type 2 解决不同问题

Type 1 直接覆盖旧值,适合纠错或不需要历史的属性;Type 2 为每次变化增加新版本,通过代理键和有效期保留历史。两者可以在同一维度中按属性组合,但规则必须写清。

事实表最好在写入时关联正确维度版本;迟到事实和回填则需要根据业务时间重新匹配。处理不当会产生有效期重叠或找不到版本。

让语义层知道时间语义

模型描述应告诉 AI 哪个日期决定维度版本、默认采用当时还是当前视角、跨版本如何汇总。还要标记没有匹配、有效期冲突和未知成员。

BuildTable 可作为整理关系、字段与语义的建模候选;复杂 SCD、CDC 和历史回填的具体支持边界必须在真实数据上验证。

用边界日期做回归测试

准备变化前一天、变化当天、变化后一天,以及迟到和撤销变更样本。检查行数、金额、版本键和两种分析视角是否符合预期。

把组织重组、商品改类和客户升级作为固定测试集,每次模型发布后重跑。历史维度的可靠性来自明确规则与回归测试,不是表名中出现 history。

公开参考资料

开始构建 AI 友好的数据基础

下载 BuildTable,或联系我们讨论企业数据建模场景。

下载 BuildTable