路径:哪些模型可以连接
基数:1:1、1:N、N:M
键:业务键与空值处理
时间:当前与历史有效关系
保护:行数、重复与扇出测试
Join 成功不代表结果正确
数据库只验证语法和类型,不知道“客户当前归属门店”与“客户历史下单门店”的业务差别。错误关系往往不会报错,只会让指标悄悄变大或归属错误。
语义模型需要把可用关系从隐含 SQL 提升为可审查的契约。
契约必须包含业务时间
组织、客户等级、商品分类和区域归属会变化。用当前维度连接历史事实会重写历史,需要按生效区间连接或明确接受当前视角。
记录关系的开始、结束、当前标记、晚到变更和未知成员处理。
多对多关系需要显式建模
商品与活动、客户与标签、账户与负责人常是多对多。直接 Join 会产生组合膨胀,应使用桥接表、权重、去重或先聚合策略。
契约要说明哪些指标允许跨桥接表聚合,以及不可加指标如何处理。
把失败变成阻断而不是警告
测试关系键唯一性、引用完整性、Join 前后行数、扇出倍数和指标对账。超过约定阈值时阻止发布,避免带病模型进入 AI 分析。
记录契约所有者、版本、依赖指标和变更审批,使失败能定位到具体责任。
用查询路径验收语义层
准备同一指标按客户、商品、活动和历史组织切分的案例,检查系统是否选择被允许的 Join,并拒绝不安全路径。
对比手写 SQL、通用元数据目录和受治理语义层时,重点评估关系表达、测试、版本、影响分析和退出能力。
