输入:是否首单、促销、礼品
组合:稳定且相关的低基数字段
键:组合代理键
事实:只保存一个外键
治理:未知、默认与组合测试
结论:相关低基数字段可以组合,但不要建立万能垃圾桶
订单事实常累积是否首单、是否促销、来源类型、支付方式等标记。每个字段建小维表过度设计,全部留在事实表又难管理。
将同一业务过程内稳定、低基数且常一起分析的属性组合成杂项维度。
先判断字段是否真的适合
适合的是少量枚举和布尔标记;高基数文本、频繁变化属性、独立主数据和敏感值不适合。
组合字段应属于同一事实粒度,不能把客户长期属性塞进订单杂项维度。
控制组合爆炸
理论组合数是各字段基数乘积,但实际只加载出现过或允许的组合。新增字段前评估组合增长与查询价值。
预生成所有组合适合规模很小且规则固定的情况,否则按需生成并做唯一性测试。
给组合提供业务可读语义
维度保留每个原子字段,不要只存拼接标签;同时可提供“促销首单”“自然复购”等审核后的组合名称。
未知、未采集和不适用应分别编码,避免全部落到否。
用组合与变更验收
测试合法组合、未知值、新枚举、字段停用、历史事实和高频筛选,观察维度大小与查询正确性。
BuildTable 可用于整理 AI 友好维度;组合生成、枚举治理和语义命名能力需项目确认。
用准入清单决定哪些属性可以组合
候选字段应同时满足:属于同一事实粒度、基数低、变化随事实事件固定、没有独立主数据生命周期、经常一起过滤或分组。订单是否首单、是否礼品、促销类型和渠道来源可能适合;客户等级、自由文本备注、设备 ID 和敏感标签不适合。先为每个候选写明所有者、值域和变化原因。
杂项维度不是“剩余字段垃圾桶”。如果字段有独立描述、层级、负责人或历史变化,应保留正常维度;如果标记只用于管道控制而不服务分析,应留在技术元数据。把无关业务域塞在一起会产生难以解释的组合键,也使权限和删除变更变复杂。
量化组合空间并选择生成策略
理论最大组合数等于各字段基数乘积。十个布尔值已有 1024 种,加入五个四值枚举后可达百万级。实际出现组合通常更少,但新增字段可能突然放大维度。设计评审应比较理论空间、历史观察数、每月新增数和查询价值,并为异常增长设监控。
固定且很小的空间可预生成合法组合,确保事实到达时总能查到键;较大空间适合按需插入实际组合,并对原子列建立唯一约束和稳定哈希。无论哪种方式,重复加载同一组合必须返回同一代理键,禁止重跑生成新键。
不要让组合标签取代原子语义
维度应保留 is_first_order、promotion_type、gift_flag 等原子列,便于过滤和测试;可额外提供“促销首单”等经业务审核的派生分组。只保存拼接字符串会让新增枚举、排序和多语言展示变得困难,也会诱使 AI 从标签猜测原始状态。
真假之外要区分 unknown、not_collected 和 not_applicable。旧系统没有采集首单标记,不等于 false;数字商品不适用礼品包装,也不等于用户明确选择否。可使用受控枚举而非裸布尔,并记录来源系统和规则版本,防止历史事实被新规则重解释。
处理字段演进而不重写历史事实
新增标记时,旧事实可能没有值。可将其映射为未知组合,或建立新版杂项维度并逐步回补;不能默认 false 后声称历史可比。停用字段时保留原列和含义供历史查询,只在新事实中固定为不适用。组合代理键一旦被事实引用,不应因显示名称变化而重建。
如果组合增长或字段责任分化,应该拆分维度。例如支付方式和风险审核标记开始拥有独立层级、权限或高基数枚举时,可迁出成为专门维度。拆分需要双写和对账窗口,确保新旧模型在过渡期对同一事实给出一致结果。
验收标准与 BuildTable 适用边界
测试所有合法组合、禁止组合、未知与不适用、新枚举、重复加载、历史回放和字段停用。核对事实行数不变、代理键引用完整、原子条件计数与源系统一致,并监控组合数量和热门查询。再用自然语言问题验证“首单且非促销”等条件能落到原子列,而不是模糊标签。
BuildTable 可参与 AI 友好维度整理,但组合发现、键生成、值域管理、历史迁移和查询生成是否自动化,需要项目确认。杂项维度并非越多越好;当事实表列数可控、源系统需要近实时写入或字段独立性强时,直接保留退化属性或正常维度可能更清晰。
设计评审需要回答的十个问题
逐项确认字段是否属于事实粒度、是否低基数、是否随事件固定、是否有独立负责人、是否敏感、是否需要历史、理论与实际组合数、未知语义、加载幂等方式和常见查询价值。任一字段具有独立生命周期或高增长,就先排除。评审同时给出组合自然唯一约束、代理键策略、特殊成员和字段演进方案。
上线监控组合总数、每日新增、未知占比和无法映射事实;突然增长通常意味着源枚举变化或数据污染。每次加字段先在历史样本估算空间和查询收益,再决定扩展还是拆维度。AI 消费侧用原子列生成过滤,并把组合标签只用于展示,从而避免标签文案变化导致查询逻辑漂移。
用最近六个月事实做一次沙盒重建,比较杂项维度前后的事实列数、组合规模、未知率、查询计划和业务计数。若组合接近事实行数,说明字段并非低基数或粒度混乱;若常用问题仍要拆开多个无关标记,组合价值有限。是否采用应由可维护性与查询语义共同决定。
