迷你维度建模结构
01

核心维度:稳定客户身份

02

迷你维度:受控画像组合

03

事实表:客户键 + 画像键

04

历史视图:事件发生时状态

05

当前视图:独立映射与版本

结论:不要让每次画像变化都复制整行客户

客户等级、活跃度、风险段、生命周期和价格敏感度可能每天重算。如果全部放进客户 SCD2 维度,每个属性变化都会关闭旧行、创建新行;数十个属性的组合变化会让维度远大于客户数,事实关联也变得难以解释。

迷你维度把频繁变化且可枚举的画像属性抽成独立组合,核心客户维度保留稳定身份。交易或行为事实同时保存 customer_key 与 profile_key,于是历史查询读取事件当时画像,而客户姓名、开户日等稳定属性不必反复复制。

先按变化速度、基数和用途给属性分类

候选属性要同时满足:变化明显快于主体维度、值域可治理、组合数量可控,并且分析确实需要事件时状态。年龄段、余额区间和活跃等级可以考虑;手机号、地址全文、自由标签、设备 ID 等高基数值通常不适合。

不要机械地把“经常变”当成唯一标准。实时余额应留在周期快照或事实表,精确年龄可由出生日期与事件日推导,敏感属性还需先判断是否允许进入分析模型。属性清单应记录负责人、来源、刷新频率、分类规则和保留期限。

核心维度和迷你维度要有清晰职责

dim_customer 保存不可变业务键、代理键、创建日期及低频变化的受治理属性;dim_customer_profile 保存 profile_key、每个分箱或枚举、组合指纹、规则版本和生效信息。事实表在事件粒度保存两个代理键,不能只靠查询时回查当前画像。

若事实只存 customer_key,再按当前客户画像关联,历史订单会被重写成今天的等级;若只存 profile_key,则失去客户实体分析。双键结构是在实体身份和事件时状态之间建立明确分工,而不是制造两个相互替代的客户维度。

画像分箱必须版本化,避免静默改写历史

“高价值”从近 90 天消费大于 5000 元改为大于 8000 元,会改变同一个标签的含义。规则表应保存 definition_version、阈值、币种、观察窗、时区、生效时间和审批人;旧 profile 行不能直接更新为新解释。

分析需要区分“当时按当时规则分类”和“用今天规则回看历史”。前者读取事实保存的 profile_key,后者应运行可重放的重分类并明确标记 restated_version。两种视图都可以有价值,但不能在同一指标里无提示混用。

控制组合爆炸,而不是把所有标签做笛卡尔积

迷你维度不应预先生成所有可能组合。只在实际出现时 upsert 组合,并以规范化属性生成唯一指纹。持续监控组合数、每日新增率、单客户变化次数和长尾占比;异常增长通常来自未经治理的自由文本、精度过高的数值或空值编码不一致。

可以把业务目的不同、刷新频率差异大的属性拆成多个迷你维度,但事实表会增加外键和治理成本。是否拆分要根据查询模式与组合相关性决定,不能为追求“纯粹”无限拆表。高基数连续值更适合事实或快照,展示时再分段。

事实加载要按事件时刻选择正确画像

加载事实时先解析客户代理键,再依据 event_time 与画像快照或变更事件确定 profile_key。批处理重算要使用业务有效时间,不应以作业到达时间替代。若画像只在日末生成,应明确日内事件采用当天开始、当天结束还是上一完整日规则。

迟到事实可能发生在三个月前,必须能够找到当时画像版本;迟到画像也可能要求补写受影响事实。重放需要幂等,并记录 original_profile_key、reclassified_profile_key 与原因。不能直接批量覆盖而没有变更审计。

当前画像需要独立映射,不要污染事件事实

很多运营问题需要“当前高价值客户过去买了什么”,这与“客户购买时属于什么等级”不同。可维护 customer_key 到 current_profile_key 的小型映射或在核心维度保存当前键,查询层用明确语义选择 current 或 as_was 视图。

反例是让 BI 工具默认通过核心客户表连接当前画像,导致所有历史趋势随每日分类变化。语义层应提供名称不同的指标和维度,并在结果中显示画像口径、规则版本与数据截止时间。

未知、缺失与敏感信息必须显式治理

建立 Unknown、Not yet calculated、Not applicable 等受控成员,不能把空值统一写成“其他”。算法未运行、源字段缺失和业务不适用代表不同质量状态,也影响组合数和下游决策。

画像可能涉及健康、财务或行为推断。进入迷你维度前要做合法性、必要性和访问范围评审;事实级 profile_key 也可能让用户反推出敏感分类。列权限、最小群组、留存和删除传播需要与模型一起设计。

用守恒、增长和历史回放验收模型

验收至少检查:事实行数与金额在改造前后守恒;每条事实只命中一个客户和一个事件时画像;组合指纹唯一;规则版本可追溯;迟到事实能重放;当前视图与历史视图区分;未知占比在阈值内。

用快速变更客户、从未变化客户、规则换版、跨日事件、迟到事实、删除请求和高基数污染做反例测试。对一个月历史进行回放,比较每日组合增长与关键指标,不要只验证几条顺利样本。

实施顺序与 BuildTable.ai 边界

先选一个明确画像主题,盘点属性与敏感度,冻结分箱规则,建立核心维度、迷你维度和双键事实,在沙箱回放历史,再发布 current/as_was 语义视图。上线后监控组合增长、未知率、重分类量、迟到补写和查询误用。

BuildTable.ai 可作为数据模型设计与结果表构建候选,但本文不证明当前版本会自动识别快速变化属性、生成迷你维度或处理敏感画像。连接、调度、历史重放、权限和发布方式需按实际版本逐项核验;具体模型仍应由数据与业务负责人共同批准。

公开参考资料

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

联系我们讨论企业数据建模场景并获取 BuildTable Desktop。

联系我们