首页/数据/数仓建模速查/维度字段类型与枚举规范
维度与事实设计149 条

维度字段类型与枚举规范

维度属性类型全库统一:枚举值用固定编码(0/1 而非 yes/no 混用)、字符串去空格统一大小写、布尔统一 tinyint。

数仓建模速查数据更新于 2026-10-13

字段类型规范是什么

维度字段类型与枚举规范指全库统一维度的数据类型与取值表达:枚举用固定编码而非 yes/no 混用,字符串入库前统一去空格与大小写,布尔统一为 tinyint 的 0/1,编码类字段用编码而不是中文名做主键。它解决的是同一业务含义在不同表里写法不同,导致 join 不上、过滤条件悄悄失效的问题。规范要写进数据字典并随变更流程走。

基本信息

枚举统一编码值域,禁用中英文并存
字符串trim 后存储,大小写规范统一
布尔tinyint 0/1,不用 yes/no、Y/N
编码用编码做键,中文名只做展示属性
登记值域写进数据字典,新增走变更流程

典型使用场景

  • 建维表:新建维表时按规范挑类型,避免下游反复转换
  • 多源合并:两个源对性别、状态的写法不同,入仓先归一
  • join 排查:关联不上时常因为两侧类型或大小写不一致
  • 报表过滤:状态值新增后旧过滤条件静默失效,需要有值域约束
  • 数据字典维护:值域随业务扩展,规范要求同步登记与通知下游
  • 存储优化:枚举用 tinyint 替代长字符串,压缩与扫描都更省

规范示例

规范示例
is_active   tinyint     NOT NULL DEFAULT 0  -- 0/1,不用 yes/no
user_name   varchar(64)                  -- trim 后存储,保留原始大小写只做展示
city_code   varchar(12)                  -- 统一行政区编码,不用中文名做键
gender_code tinyint                      -- 0 未知 1 男 2 女,值域固定在字典里
status      varchar(16)                  -- 全小写英文枚举,禁用中文与首字母大写混写

类型规范对照

字段推荐常见错误写法
布尔tinyint 0/1yes/no、Y/N、true/false 混用
枚举短字符串编码或 tinyint中文值与英文值并存,长度随手给 255
日期date 或 yyyyMMdd 的 intvarchar 存 2026/10/13、2026-10-13 混排
金额decimal 明确精度float 参与金额计算
编码类键定长编码 varchar中文名做主键,改名即断链
字符串trim 后入仓前后空格导致 join 不中
枚举值域一旦对外使用就属于契约:新增取值要评估下游过滤条件、报表分组与 API 参数是否兼容,删除或改语义更要走版本管理。字符串字段尽量明确最大长度,避免下游按 255 预估内存与索引长度。

易错点

  • 布尔字段 yes/no、Y、1、true 四种写法并存:下游每个判断都要写一长串 OR,漏一个就统计错
  • 新增枚举值不走流程:报表里写死的过滤条件静默漏数,指标看着正常实际偏小
  • 用中文名做业务键:源端改名后维表与事实的关联整片断裂,且无法靠编码回补
  • 日期用 varchar 存且格式不统一:排序、区间筛选、分区裁剪全部失效
  • 字符串未 trim:带空格的键 join 不上,表现为随机丢行,排查成本极高

数据来源与参考

  • 数仓字段规范实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌