搭建数据仓库时ODS是否需要遵循DW的Schema设计?
关于ODS层是否需要遵循DW Schema设计规范的解答
核心结论先放前面:ODS既不需要硬套DW的全套Schema设计规范,也不能只做毫无规则的原始数据堆放库,设计尺度完全围绕它自身的架构定位来定就行
具体落地可以参考几个实操原则:
- 贴源存储部分完全不用对齐DW的维度建模规范。ODS的第一作用是留痕溯源,这部分的表结构要尽量和上游业务源系统保持完全一致:源端字段叫啥名、是什么类型、枚举值怎么定义,同步过来就原样保留,别上来就按DW的规范改维度主键名、拆事实表维度表、统一字段后缀。真要是硬套DW规范改了结构,后续排查数据差异、核对源端逻辑的时候,你连字段对应关系都要捋半天,溯源成本会高到离谱。
- 衔接DW的基础规则必须和数仓整体规范对齐,不能随便乱建。别把ODS做成谁都能随便写表的“数据垃圾场”,最基础的通用规则要统一:比如表名要按「来源系统_源表名_同步频率」的统一规则命名、必须加
etl_insert_time(数据入仓时间)、src_update_time(源端数据更新时间)这类通用审计字段、按同步周期统一设计分区字段、明确全量/增量表的标识规则。这些规则对齐了,DW层抽数的时候不用给每个表单独写适配逻辑,能省非常多维护成本。 - 如果你的ODS承担了前置轻清洗的职责,对应口径规则可以直接对齐DW规范。比如DW层统一要求空值用
NULL表示不允许留空字符串、金额字段统一以分为单位存储、时间字段统一用yyyy-MM-dd HH:mm:ss格式,这类不改变业务语义的通用清洗规则,完全可以在ODS层提前处理,不用等DW层每个任务重复做一遍相同的转换。
别死抠理论上的规范定义走极端:既不要为了所谓的“全链路规范统一”给ODS强加一堆维度建模要求,丢了贴源溯源的核心价值;也不要完全放任ODS无规则建设,给下游DW抽取留一堆没必要的坑,适合自己团队运维节奏的尺度就是最合适的。
内容的提问来源于stack exchange,提问作者Sara
相关产品推荐
相关产品推荐

