第一章:数据仓库分层架构设计

大家好,我是老张。在风控领域摸爬滚打了十多年,今天咱们聊聊数据仓库分层这件事。说实话,我见过太多团队一上来就建表,结果三个月后数据乱成一锅粥。分层设计,说白了就是给数据盖楼——地基不稳,上层全塌。

一、为什么必须分层?

先问个问题:你见过那种“一张大表走天下”的风控系统吗?我见过。那哥们把所有数据塞进一张表,字段超过200个。结果呢?每次跑批都要扫全表,一个简单的风控规则要跑半小时。更可怕的是,业务方说“我要加个字段”,得改200个下游任务。

分层的好处,我总结三点:

  • 解耦:每层只管自己的事,改一层不影响其他层
  • 复用:公共逻辑只做一次,下游直接取数
  • 可追溯:数据从哪来、经过什么处理,一目了然

核心原则:每一层的数据,只依赖它的下一层。千万别跨层引用,否则你会后悔的。

二、四层架构详解

风控数据仓库,我习惯分四层:ODS、DWD、DWS、ADS。嗯,这是最经典的架构,也是我踩坑踩出来的经验。

1. ODS层(操作数据存储层)

这一层,说白了就是“数据搬运工”。从业务系统、日志、第三方接口把数据原封不动地搬过来。我刚开始做风控时,觉得这层没啥技术含量。直到有一次,上游系统改了字段类型,ODS没做校验,结果下游全崩了。

ODS层职责

  • 数据接入:支持全量、增量、实时流
  • 数据校验:字段类型、非空、唯一性检查
  • 数据保留:一般保留7-30天原始数据

我的经验:ODS层一定要做“数据快照”。比如用户行为日志,每天一个分区,万一哪天数据出问题,还能回滚到前一天。

2. DWD层(明细数据层)

这一层开始做“清洗”了。去掉脏数据、统一格式、做简单的关联。举个例子:用户注册时间,ODS层存的是字符串“2024-01-15 10:30:00”,DWD层要转成时间戳。为什么?因为风控规则经常要算“注册距今多少天”,用字符串算太慢了。

DWD层核心工作

  • 数据清洗:去重、空值处理、异常值过滤
  • 数据标准化:统一时间格式、枚举值映射
  • 维度退化:把维度表的字段拉到事实表里

避坑指南:我曾经在DWD层做了一次“用户地址补全”,结果因为第三方接口超时,整个ETL任务挂了3小时。记住:DWD层只做确定性转换,别依赖外部服务。

3. DWS层(汇总数据层)

这一层,是风控的“弹药库”。把明细数据按业务维度汇总,比如“用户近7天登录次数”、“近30天交易金额”。为什么要有这层?你想想看,风控规则要实时判断,总不能每次去扫几亿条明细吧?

DWS层典型指标

维度 指标 说明
用户 近7天登录次数 判断账号异常
设备 关联账号数 判断设备是否被滥用
IP 近1小时请求次数 判断是否爬虫

4. ADS层(应用数据层)

这一层是给业务方用的。比如风控规则引擎、报表系统、实时大屏。ADS层的数据,通常是宽表或者预计算好的指标。我见过最夸张的ADS表,有300个字段——嗯,那哥们把所有能想到的指标都塞进去了。结果呢?查询慢得要死,还没人用。

ADS层设计原则

  • 按场景建表:一个规则一张表,别搞大而全
  • 预聚合:能提前算好的,别等查询时再算
  • 数据时效:实时场景用ClickHouse,离线场景用Hive

三、数据流向与分层原则

数据流向很简单:ODS → DWD → DWS → ADS。但这里有个坑——很多人喜欢“抄近路”,直接从ODS跳到ADS。我刚开始也这么干过,结果呢?业务方说“这个指标怎么算的”,我查了半天才发现ODS的数据有问题。

分层设计原则

  1. 单向依赖:上层只能依赖下层,不能反向
  2. 数据一致性:同一指标在不同层,口径必须一致
  3. 适度冗余:允许少量数据重复,但别过度
  4. 命名规范:表名要能看出是哪层、哪个业务

最佳实践:我建议每层都加一个“数据质量监控”。比如DWD层做完清洗后,检查一下空值率是否超过阈值。如果超过,发告警。这个习惯救过我很多次。

四、架构图:四层数据流向

下面这张图,是我用SVG画的四层架构。你一看就明白数据怎么流了:

风控数据仓库四层架构 ODS层(操作数据存储层) 原始数据接入:业务库、日志、第三方接口 DWD层(明细数据层) 数据清洗、标准化、维度退化 DWS层(汇总数据层) 按维度汇总:用户、设备、IP等核心指标 ADS层(应用数据层) 规则引擎、报表、实时大屏 数据源 清洗 汇总 应用

五、总结

分层设计,是风控数据仓库的骨架。骨架搭好了,后面加规则、加指标都轻松。我见过太多团队,一开始图省事不分层,结果半年后数据质量一塌糊涂,不得不重构。嗯,那成本可就大了去了。

最后说一句:分层不是目的,好用才是。别为了分层而分层,要根据业务场景灵活调整。比如实时风控场景,ODS到DWS可能就一步到位了——但前提是,你得清楚自己在做什么。

专注资料整理