本项目建设银行信贷风控数据仓库,覆盖贷前、贷后全流程。
数据从核心、信贷、征信等源系统入库,经ODS、DWD、DWS至ADS分层加工。
核心包括:
- 信用评分模型,整合征信、存款、信用卡还款、展期记录四类数据,采用CASE WHEN规则化打分,输出客户综合评分,用于贷前授信与利率定价;
- 贷后资金流向监控,识别放款后15日内资金是否流入公检法重点账户、小贷公司或房地产商户,支持以贷养贷与担保链风险预警。
项目采用Hive + Oracle数仓架构,日调度ETL,输出信用评分表、预警结果表,直接服务于信贷审批与贷后管理部门。
信贷风控项目
一、 项目核心框架:从业务到技术
本项目围绕银行/金融机构的信贷业务(贷款、信用卡),利用大数据和风控模型,解决贷前、贷后两大场景的核心风险控制问题。
二、 贷前风控:信用评分与授信
核心目标:判断借款人还款能力和意愿,决定是否给额度、给多少、利率多少。
1. 数据来源(多维度刻画客户)
| 数据维度 | 具体内容 | 数据来源层 |
|---|---|---|
| 资产状况 | 存款、理财、黄金、国债等余额 | DWD/DWS |
| 收入流水 | 个人账户交易流水(工资、经营收入) | DWD |
| 负债与信用历史 | 央行征信报告(结构化解析后)、本行信用卡还款记录、历史贷款记录 | DWD/ADS |
| 行为数据 | 信用卡消费习惯(商户、金额、频次) | DWD |
2. 核心模型:信用评分模型(规则加权)
模型本质:基于多个风险属性,根据预设规则打分,加权求和得到总分。
📊 示例评分卡(权重与得分规则)
| 风险属性 | 评分规则(示例) | 满分 | 张三得分 |
|---|---|---|---|
| 征信记录 | 无逾期=10分;有逾期=0分 | 10 | 0 |
| 存款余额 | >10万=10分;5-10万=5分;<5万=0分 | 10 | 10 |
| 信用卡还款 | 按时全额还款=10分;最低还款/分期=0分 | 10 | 10 |
| 贷款展期历史 | 无展期=5分;有展期=0分 | 5 | 5 |
| 本行未结清贷款 | 无=5分;有且正常=3分;有且逾期=0分 | 5 | - |
| ...其他 | ... | ... | ... |
| 总分 | 各属性得分求和 | 40+ | 25 |
决策应用:
-
85分以上:高额度,优惠利率,可免息期。
-
60-85分:标准额度,正常利率。
-
60分以下:拒绝或低额度高利率。
3. SQL实现逻辑(多表关联 + CASE WHEN)
sql
INSERT INTO 信用评分结果表 (客户号, 总分, 征信分, 存款分, 还款分, 展期分)
SELECT
a.客户号,
COALESCE(b.征信分, 0) + COALESCE(c.存款分, 0) + COALESCE(d.还款分, 0) + COALESCE(e.展期分, 0) AS 总分,
b.征信分, c.存款分, d.还款分, e.展期分
FROM 客户信息表 a
LEFT JOIN (
SELECT 客户号, CASE WHEN 是否有逾期 = '是' THEN 0 ELSE 10 END AS 征信分
FROM 征信数据
) b ON a.客户号 = b.客户号
LEFT JOIN (
SELECT 客户号, CASE
WHEN 存款余额 > 100000 THEN 10
WHEN 存款余额 BETWEEN 50000 AND 100000 THEN 5
ELSE 0 END AS 存款分
FROM 存款账户汇总
) c ON a.客户号 = c.客户号
LEFT JOIN (
SELECT 客户号, CASE
WHEN 还款行为 = '按时全额还款' THEN 10
ELSE 0 END AS 还款分
FROM 信用卡分期还款统计
) d ON a.客户号 = d.客户号
LEFT JOIN (
SELECT 客户号, CASE WHEN 是否有展期 = '是' THEN 0 ELSE 5 END AS 展期分
FROM 展期记录表统计
) e ON a.客户号 = e.客户号;
三、 贷后风控:风险预警与资金流向监控
核心目标:放款后持续监控,及时发现"以贷养贷"、"资金流入禁入领域(股市、房市)"、"涉及洗钱/诈骗"等风险。
1. 关键监控模型:贷款流向模型
监测重点:
-
🚩 以贷养贷 :放款后短期内(如15天),资金流向小额贷款公司、消费金融公司。
-
🚩 违规用途 :流向房地产、股市、公检法重点监控账户。
-
🚩 关联风险:流向征信黑名单客户、本行其他逾期客户的账户。
数据表:
-
放款流水表:放款时间、收款账号、合同号。 -
交易流水表:交易时间、转出账号、对手账号/名称、金额。 -
贷款合同表:合同号、客户号、产品类型。 -
公检法监控账户表:黑名单账户、风险商户。
SQL实现逻辑:
sql
INSERT INTO 贷款流向预警表
SELECT
a.合同号, a.收款账号 AS 放款账户,
c.交易时间, c.交易对手账号, c.交易对手名称, c.交易金额,
CASE WHEN d.监控账号 IS NOT NULL THEN '是' ELSE '否' END AS 是否流向公检法账户,
CASE WHEN c.交易对手名称 LIKE '%小额贷款%' OR c.交易对手名称 LIKE '%信贷%' THEN '是' ELSE '否' END AS 是否流向小贷公司,
CASE WHEN COUNT(c.交易流水号) OVER(PARTITION BY a.合同号) > 1 THEN '是' ELSE '否' END AS 是否多笔分散
FROM 放款流水表 a
JOIN 贷款合同表 b ON a.合同号 = b.合同号
JOIN 交易流水表 c ON a.收款账号 = c.转出账号 -- 放款账户转出
LEFT JOIN 公检法监控账户表 d ON c.交易对手账号 = d.监控账号
WHERE c.交易时间 BETWEEN a.放款时间 AND a.放款时间 + INTERVAL '15' DAY
AND (d.监控账号 IS NOT NULL
OR c.交易对手名称 LIKE '%小额贷款%'
OR c.交易对手名称 LIKE '%信贷%');
2. 其他重要贷后监控
| 监控点 | 说明 | 预警信号 |
|---|---|---|
| 还款资金来源异常 | 每月还款前,固定从某小贷公司转入等额资金 | 以贷养贷 → 风险 |
| 个人资产大幅减少 | 存款、理财突然全部转出 | 资金紧张或转移资产 |
| 他行贷款逾期 | 同一借款人在其他机构出现逾期(征信更新) | 共债风险 |
| 信用卡异常交易 | 同一商户固定时间大额刷卡(套现嫌疑) | 套现风险 |
| 担保人风险 | 担保人征信恶化、资产大幅减少 | 代偿风险增加 |
四、 数据仓库分层架构(核心知识)
标准四层架构(由原始到应用)
| 层名 | 英文缩写 | 作用 | 数据示例 |
|---|---|---|---|
| 操作数据层 | ODS | 原始数据,与源系统基本一致 | 银行核心系统日志、接口文件 |
| 数据明细层 | DWD | 清洗、标准化、轻度明细 | 清洗后的交易流水表、征信明细表 |
| 数据汇总层 | DWS | 按主题聚合(日/月累计) | 客户月日均存款汇总表、近3个月交易统计表 |
| 应用数据层 | ADS | 面向具体应用的结果表 | 信用评分结果表、贷款流向预警表 |
项目中"指标层"实质
指标层 不是独立物理层,而是位于DWS/ADS的逻辑概念。
-
基础指标:原子指标(如:贷款金额)
-
衍生指标:按时间/维度计算(如:近3个月公积金不良贷款余额)
-
指标结果表 :存储
指标ID,指标名称,指标值,统计日期
| 指标ID | 指标名称 | 指标结果 | 统计日期 |
|---|---|---|---|
| 1 | 公积金贷款不良类贷款余额 | 999万 | 2025-03-31 |
五、 技术架构与主题划分
1. 技术架构(两种演进)
| 传统架构 | 大数据架构 |
|---|---|
| 数据库:Oracle(单机/集群) | 数据仓库:Hive(分布式) |
| 调度:Linux Crontab | 调度:Azkaban/Airflow |
| 处理:Shell + SQL | 计算:Shell + Spark SQL |
| 迁移:- | 工具:Sqoop(Oracle ↔ Hive) |
2. 主题域划分(参考"十大模型")
主题是对业务进行高度抽象的分类。常见的有:
-
当事人:客户、担保人、机构。
-
协议:贷款合同、信用卡合约。
-
事件:交易流水、还款记录、逾期事件。
-
授信主题:额度、利率、审批结果。
-
预警主题:风险信号、黑名单、监控记录。
本项目中:信用评分模型 → 授信主题;贷款流向模型 → 预警主题。
六、 复习重点总结
-
能说清流程:贷前(数据收集→特征加工→评分→授信)vs 贷后(持续监控资金/资产/征信)。
-
能画模型图:信用评分卡(属性+规则+权重)、资金流向监控(时间窗口+对手黑名单)。
-
能写核心SQL:多表LEFT JOIN + CASE WHEN 打分,以及交易流水的时间窗口关联。
-
能画出数据分层:ODS → DWD → DWS → ADS,并说出每层作用。
-
能举例指标:知道"指标ID+指标值+统计日期"的结构。
-
能区分技术栈:传统Oracle模式 vs 大数据Hive模式。
信用评分模型
下面从**"落地"**的角度,逐块梳理、补充、纠正。
一、整体评价
| 维度 | 评价 |
|---|---|
| 业务理解 | ✅ 核心逻辑正确:贷前评分、贷后资金流向、以贷养贷、担保链风险 |
| 数据来源 | ✅ 明确:DWD/DWS、征信、流水、合同、展期、公检法名单 |
| 分层思路 | ✅ 清晰:基础层→模型层→指标层 / ODS→DWD→DWS→ADS |
| 技术架构 | ✅ 合理:Oracle + Hive + Sqoop 是银行数仓经典组合 |
| 可落地性 | ⚠️ 需要补充:粒度、主键、去重、时间窗口边界、多笔贷款聚合 |
二、对"信用评分模型"的补充与规范
你的逻辑是对的:多张表关联 → CASE WHEN 打分 → 加权汇总。
✅ 需要明确的几个细节
1️⃣ 权重体系要显式定义
你目前是隐含权重,建议显式写出:
| 评分项 | 判断逻辑 | 得分 | 权重说明 |
|---|---|---|---|
| 征信 | 有逾期 → 0;无逾期 → 10 | 0/10 | 一票否决类 |
| 存款余额 | <5w → 5;≥10w → 10 | 5/10 | 资产证明 |
| 信用卡还款 | 最低还款/分期 → 0;全额按时 → 10 | 0/10 | 还款习惯 |
| 本行展期记录 | 有 → 0;无 → 5 | 0/5 | 历史违约 |
2️⃣ 明确"客户级"还是"借据级"
你写的是:
sql
SELECT 客户号, ...
✅ 正确 。信用评分是客户级的,不是借据级。
3️⃣ 一个容易被忽视的问题:时间窗口
你当前是"截至当前"的快照,但实际生产中通常要求:
-
近12个月是否有逾期
-
近6个月存款日均
-
近3个月信用卡还款行为
👉 可以补充一句(很重要):
所有评分指标均基于近12个月的滚动窗口计算,避免一次性历史污点永久拉低评分。
三、对"贷款流向模型"的规范与补充
✅ 核心逻辑
放款后15日内,资金是否流入:
公检法关注账户
小额贷款公司
房地产相关账户
⚠️ 需要补充的几个工程细节(决定模型能不能上线)
1️⃣ 多笔贷款 + 多笔转账 = 风险聚合
你当前是一笔放款 vs 一笔转账,但真实情况更复杂:
text
一笔放款 → 多次转账 → 部分流向风险账户
建议补充:
以「贷款账户」为单位,聚合15日内所有转出交易:只要累计流向风险账户的金额 ≥ 放款金额 × 30%,即触发预警。
2️⃣ 交易对手匹配方式要分层
你是:
sql
OR 交易对手姓名 LIKE '信贷'
可以更严谨地分为三层:
| 匹配级别 | 方式 | 示例 |
|---|---|---|
| 精确匹配 | 账户号 | 公检法账户 |
| 模糊匹配 | 名称关键词 | %小额贷%、%信贷% |
| 外部名单匹配 | 网贷平台清单 | 离线维护 |
3️⃣ 15天窗口要明确"自然日"还是"工作日"
银行通常按自然日,可以明确写:
*放款后 T+0 至 T+15 自然日内。*
4️⃣ 防止重复预警
一笔贷款可能被多次扫描,需要增加:
sql
AND NOT EXISTS (
SELECT 1 FROM 预警结果表
WHERE 预警结果表.合同号 = 贷款合同表.合同号
)
四、指标层 & 主题划分
✅ 指标层示例(可直接扩展)
你给的例子是:
公积金贷款不良类贷款余额:999W
可以扩展成一套完整的风控指标体系:
| 指标ID | 指标名称 | 计算逻辑 |
|---|---|---|
| R001 | 贷款流向风险率 | 流入风险账户贷款数 / 总放款数 |
| R002 | 以贷养贷客户数 | 放款后30日内转入信贷公司客户数 |
| S001 | 信用评分<60分客户占比 | 信用评分表统计 |
| W001 | 担保人异常预警数 | 担保人征信恶化/资产下降 |
✅ 主题划分(推荐用你提到的"十大模型")
| 主题 | 对应你模型中的内容 |
|---|---|
| 当事人 | 客户、担保人 |
| 协议 | 贷款合同、担保合同 |
| 事件 | 放款、还款、转账、逾期 |
| 授信主题 | 信用评分、授信额度 |
| 预警主题 | 贷款流向、以贷养贷、担保异常 |
五、技术架构清晰化
总结:
离线数仓(监管报送 + 风控批量)
text
ODS(Oracle) → Sqoop → Hive(DWD/DWS/ADS) → 指标层 → 报表/模型
补充
日调度基于Shell + Airflow(或XX调度平台),核心作业在凌晨完成,不影响业务系统。
完整ER图(借据 ↔ 合同 ↔ 流水 ↔ 评分 ↔ 预警)
一、ER图(实体关系图)
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ 信贷风控核心ER图 │
└─────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────┐
│ 客户实体 │
│ (customer) │
│─────────────────│
│ PK 客户号 │
│ 姓名/证件号 │
│ 年龄/职业 │
└────────┬────────┘
│ 1
│
│ 拥有
│ N
┌──────────────────┴──────────────────┐
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ 贷款合同表 │ │ 信用卡账户表 │
│ (loan_contract) │ │ (credit_card) │
│─────────────────│ │─────────────────│
│ PK 合同号 │ │ PK 卡号/账户号 │
│ FK 客户号 │ │ FK 客户号 │
│ 授信额度 │ │ 信用额度 │
│ 合同金额 │ │ 已用额度 │
│ 期限/利率 │ │ 账单日/还款日 │
└────────┬────────┘ └────────┬────────┘
│ 1 │ 1
│ │
│ 对应 │ 对应
│ N │ N
┌─────────────────┐ ┌─────────────────┐
│ 借据表 │ │ 信用卡交易流水 │
│ (loan_voucher) │ │ (cc_transaction)│
│─────────────────│ │─────────────────│
│ PK 借据号 │ │ PK 流水号 │
│ FK 合同号 │ │ FK 卡号/账户号 │
│ 借据金额 │ │ 交易金额 │
│ 余额 │ │ 交易时间 │
│ 执行利率 │ │ 交易类型 │
│ 五级分类 │ │ 商户类型MCC │
│ 放款日期 │ └─────────────────┘
│ 到期日期 │
│ 借据状态 │
└────────┬────────┘
│ 1
│
│ 产生
│ N
┌─────────────────┐
│ 还款流水表 │
│(repay_flow) │
│─────────────────│
│ PK 流水号 │
│ FK 借据号 │
│ 还款金额 │
│ 还款本金 │
│ 还款利息 │
│ 还款日期 │
└─────────────────┘
═══════════════════════════════════════════════════════════════════════════════════════
┌─────────────────┐
│ 客户实体 │
│ (customer) │
└────────┬────────┘
│
│ 1
│
┌─────────────┴─────────────┐
│ 关联 │
┌────┴────┐ ┌────┴────┐
▼ ▼ ▼ ▼
┌──────────────────────────┐ ┌──────────────────────────┐
│ 征信数据表 │ │ 信用评分表 │
│ (credit_report) │ │ (credit_score) │
│──────────────────────────│ │──────────────────────────│
│ PK 客户号 + 报告日期 │ │ PK 客户号 + 评分日期 │
│ 总负债/总授信 │ │ 征信得分 │
│ 逾期次数/逾期天数 │ │ 存款得分 │
│ 贷款笔数/信用卡张数 │ │ 还款得分 │
│ 查询次数 │ │ 展期得分 │
└──────────────────────────┘ │ 综合评分 │
└──────────────────────────┘
═══════════════════════════════════════════════════════════════════════════════════════
┌─────────────────┐
│ 借据表 │
│ (loan_voucher) │
└────────┬────────┘
│
│ 1
│
│ 监控
│ N
┌─────────────────────────────────────────────────────────┐
│ 贷款流向预警表 │
│ (loan_flow_warning) │
│─────────────────────────────────────────────────────────│
│ PK 预警ID │
│ FK 借据号 / 合同号 / 贷款账户号 │
│ 放款时间 │
│ 流向账号 / 交易对手 │
│ 交易时间 / 交易金额 │
│ 预警类型(公检法/小贷公司/房地产/以贷养贷) │
│ 预警等级(高/中/低) │
│ 是否已处置 │
└─────────────────────────────────────────────────────────┘
▲
│
│ 命中
│
┌──────────────────────────┐ ┌──────────────────────────┐
│ 公检法重点账户表 │ │ 风险交易对手关键词表 │
│(justice_account_watch) │ │(risk_counterparty_keyword)│
│──────────────────────────│ │──────────────────────────│
│ PK 账户号 │ │ PK 关键词ID │
│ 账户名称 │ │ 关键词(%小额贷%等) │
│ 风险类型 │ │ 风险类型 │
└──────────────────────────┘ └──────────────────────────┘
═══════════════════════════════════════════════════════════════════════════════════════
┌─────────────────┐
│ 贷款合同表 │
│ (loan_contract) │
└────────┬────────┘
│ 1
│
│ 担保
│ N
┌─────────────────────────────────────────────────────────┐
│ 担保关系表 │
│ (guarantee_relation) │
│─────────────────────────────────────────────────────────│
│ PK 关系ID │
│ FK 合同号 / 借据号 │
│ FK 担保人客户号 │
│ 担保类型(保证/抵押/质押) │
│ 担保金额 │
└─────────────────────────────────────────────────────────┘
│
│ N
│
▼
┌──────────────────────────┐ ┌──────────────────────────┐
│ 担保人客户表 │ │ 抵质押物信息表 │
│ (guarantor_customer) │ │ (collateral_info) │
│──────────────────────────│ │──────────────────────────│
│ PK 担保人客户号 │ │ PK 押品ID │
│ 担保人与借款人关系 │ │ 押品类型(房产/存单) │
│ 担保人征信得分 │ │ 评估价值 │
│ 担保人资产变化 │ │ 抵押率 │
└──────────────────────────┘ └──────────────────────────┘
二、实体关系说明(文字版,面试可直接口述)
2.1 客户 → 合同/信用卡
| 关系 | 类型 | 说明 |
|---|---|---|
| 客户 ↔ 贷款合同 | 一对多 | 一个客户可签多份贷款合同 |
| 客户 ↔ 信用卡账户 | 一对多 | 一个客户可持有多张信用卡 |
2.2 合同 → 借据(核心)
| 关系 | 类型 | 说明 |
|---|---|---|
| 贷款合同 ↔ 借据 | 一对多 | 一份合同可分多次提款,每次提款生成一张借据 |
典型SQL:
sql
-- 一份合同下的多笔借据
SELECT * FROM 借据表 WHERE 合同号 = 'HT2024001';
2.3 借据 → 还款流水
| 关系 | 类型 | 说明 |
|---|---|---|
| 借据 ↔ 还款流水 | 一对多 | 一张借据可被多次还款(每次一条流水) |
2.4 客户 → 征信/评分
| 关系 | 类型 | 说明 |
|---|---|---|
| 客户 ↔ 征信数据 | 时间序列 | 同一客户有多个时间点的征信快照 |
| 客户 ↔ 信用评分 | 时间序列 | 同一客户有多个时间点的评分记录 |
2.5 借据 → 贷款流向预警
| 关系 | 类型 | 说明 |
|---|---|---|
| 借据 ↔ 贷款流向预警 | 一对多 | 一笔放款可能触发多条预警(多笔风险转账) |
2.6 合同 → 担保关系(多对多拆解)
合同/借据 担保人
┌─────┐ ┌─────┐
│ N │ ◄───────────────────► │ N │
└─────┘ └─────┘
│ │
└───────────┬───────────────────┘
▼
┌─────────────┐
│ 担保关系表 │
│ (中间表) │
└─────────────┘
三、核心表的字段清单(面试/简历用)
3.1 借据表(核心中的核心)
| 字段 | 作用 |
|---|---|
| 借据号 | 主键 |
| 合同号 | 关联合同表 |
| 借据金额 | 本次放款金额 |
| 余额 | 剩余未还本金 |
| 执行利率 | 计息依据 |
| 五级分类 | 正常/关注/次级/可疑/损失 |
| 放款日期 | 资金划拨时间 |
| 借据状态 | 正常/逾期/核销/结清 |
3.2 贷款流向预警表
| 字段 | 作用 |
|---|---|
| 预警ID | 主键 |
| 借据号 | 关联借据 |
| 流向账号 | 资金转入账户 |
| 交易对手 | 转入方名称 |
| 预警类型 | 公检法/小贷公司/房地产/以贷养贷 |
四、如何讲这个ER图(2分钟话术)
这套实体关系核心是「借据表」,它连接了上层的合同和下层的还款流水。
一份合同对应多张借据,一张借据对应多条还款流水。另外,贷后监控是独立的预警体系,我通过交易流水关联公检法账户表和关键词表,识别资金是否流向风险对手方。
最后,担保关系通过一个中间表把合同和担保人拆成了多对多关系,支持担保链分析。
整个模型覆盖了贷前授信、贷中评分、贷后预警三个环节,数据链路是完整的。
输出 完整数据血缘图(从源系统→DWD→DWS→ADS→预警表)
一、数据血缘全图(文本版)
┌─────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 完整数据血缘图 │
│ (信贷风控 + 贷后资金流向预警) │
└─────────────────────────────────────────────────────────────────────────────────────────────────┘
【第0层:源系统 - OLTP】
┌───────────────┐ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ 核心系统 │ │ 信贷系统 │ │ 信用卡系统 │ │ 征信解析系统 │ │ 外部名单系统 │
│ (CoreBank) │ │ (CreditSys) │ │ (CardSys) │ │ (CreditReport)│ │ (WatchList) │
│═══════════════│ │═══════════════│ │═══════════════│ │═══════════════│ │═══════════════│
│ 存款账户表 │ │ 贷款合同表 │ │ 信用卡账户表 │ │ 征信报告原始 │ │ 公检法账户表 │
│ 交易流水表 │ │ 借据表 │ │ 信用卡交易流水│ │ (XML/文本) │ │ 风险关键词表 │
│ 客户信息表 │ │ 还款计划表 │ │ 信用卡还款记录│ │ │ │ │
│ 总账科目表 │ │ 担保关系表 │ │ 信用卡分期表 │ │ │ │ │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │ │ │
└─────────────────┴─────────────────┴─────────────────┴─────────────────┘
│
【Sqoop/DataX】
每日增量/全量
│
▼
═════════════════════════════════════════════════════════════════════════════════════════════════
【第1层:ODS 贴源层】
┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ ODS层 │
│ (表结构与源系统几乎一致) │
├───────────────┬───────────────┬───────────────┬───────────────┬───────────────┬───────────────┤
│ ods_core_ │ ods_credit_ │ ods_card_ │ ods_credit_ │ ods_watch_ │ ods_hdfs_ │
│ account │ contract │ account │ report_raw │ justice_ │ external_ │
│ ods_core_ │ ods_credit_ │ ods_card_ │ │ account │ keyword │
│ trans │ voucher │ trans │ │ │ │
│ ods_core_ │ ods_credit_ │ ods_card_ │ │ │ │
│ customer │ repay_plan │ repay │ │ │ │
│ │ ods_credit_ │ ods_card_ │ │ │ │
│ │ guarantee │ installment │ │ │ │
└───────┬───────┴───────┬───────┴───────┬───────┴───────┬───────┴───────┬───────┴───────┬───────┘
│ │ │ │ │ │
└───────────────┴───────────────┴───────────────┴───────────────┴───────────────┘
│
【ETL - 数据清洗】
• 去重 • 格式统一
• 空值处理 • 代码转换
│
▼
═════════════════════════════════════════════════════════════════════════════════════════════════
【第2层:DWD 明细层】
┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ DWD层 │
│ (清洗后的明细数据,细粒度) │
├─────────────────────────────┬─────────────────────────────┬─────────────────────────────────┤
│ 贷款/存款主题 │ 信用卡主题 │ 外部/征信主题 │
├─────────────────────────────┼─────────────────────────────┼─────────────────────────────────┤
│ dwd_customer_di │ dwd_card_account_di │ dwd_credit_report_parse_di │
│ (客户信息,日增量) │ (信用卡账户,日增量) │ (征信报告解析后,结构化) │
│ │ │ │
│ dwd_loan_contract_di │ dwd_card_trans_di │ 核心解析字段: │
│ (贷款合同,日增量) │ (信用卡交易流水,日增量) │ • 总负债/总授信 │
│ │ │ • 逾期次数/最大逾期天数 │
│ dwd_loan_voucher_di │ dwd_card_repay_di │ • 贷款笔数/信用卡张数 │
│ (借据表,日增量) ← 核心表 │ (信用卡还款记录,日增量) │ • 近3个月查询次数 │
│ │ │ │
│ dwd_loan_repay_flow_di │ dwd_card_installment_di │ dwd_watch_account_df │
│ (还款流水,日增量) │ (信用卡分期记录,日增量) │ (公检法监控账户,全量) │
│ │ │ │
│ dwd_loan_guarantee_di │ │ dwd_risk_keyword_df │
│ (担保关系,日增量) │ │ (风险关键词,全量) │
└─────────────────────────────┴─────────────────────────────┴─────────────────────────────────┘
│
【ETL - 轻度聚合】
• 按客户/账户聚合
• 计算衍生字段
• 关联多张明细表
│
▼
═════════════════════════════════════════════════════════════════════════════════════════════════
【第3层:DWS 汇总层 / 主题宽表层】
┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ DWS层 │
│ (按主题预聚合,宽表,中度/重度汇总) │
├─────────────────────────────────────────┬───────────────────────────────────────────────────┤
│ 客户/账户主题宽表 │ 风控/预警主题 │
├─────────────────────────────────────────┼───────────────────────────────────────────────────┤
│ dws_customer_asset_summary_di │ dws_loan_flow_15d_di │
│ (客户资产汇总,日增量) │ (贷款15日内资金流向汇总,日增量) │
│ • 客户号 │ • 借据号 │
│ • 存款总余额 │ • 放款金额 │
│ • 理财总余额 │ • 流向风险账户总金额 │
│ • 总负债 │ • 流向风险账户笔数 │
│ • 资产负债率(衍生) │ • 是否命中公检法名单 │
│ │ • 是否命中小贷关键词 │
├─────────────────────────────────────────┼───────────────────────────────────────────────────┤
│ dws_customer_credit_summary_di │ dws_loan_repay_warning_di │
│ (客户征信汇总,日增量) │ (贷款还款预警汇总,日增量) │
│ • 客户号 │ • 借据号 │
│ • 近3个月查询次数 │ • 当前逾期天数 │
│ • 近12个月逾期次数 │ • 是否进入关注/次级 │
│ • 最大逾期天数 │ • 剩余本金 │
│ • 当前总授信/总负债 │ • 最近一次还款日期 │
├─────────────────────────────────────────┼───────────────────────────────────────────────────┤
│ dws_card_behavior_summary_di │ dws_guarantor_warning_di │
│ (信用卡行为汇总,日增量) │ (担保人风险预警,日增量) │
│ • 卡号/客户号 │ • 合同号/借据号 │
│ • 刷卡额度使用率(衍生) │ • 担保人客户号 │
│ • 月均消费金额 │ • 担保人征信得分 │
│ • 是否最低还款/分期 │ • 担保人资产变化 │
│ • 近6个月按时还款次数 │ • 担保链风险等级 │
└─────────────────────────────────────────┴───────────────────────────────────────────────────┘
│
【ETL - 指标计算】
• 规则判断(CASE WHEN)
• 多表关联(评分/预警)
• 权重打分
│
▼
═════════════════════════════════════════════════════════════════════════════════════════════════
【第4层:ADS 应用层 / 指标层】
┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ ADS层 │
│ (面向具体应用的结果表,高度聚合) │
├─────────────────────────────┬─────────────────────────────┬─────────────────────────────────┤
│ 信用评分模型输出 │ 贷前授信指标 │ 贷后风险指标 │
├─────────────────────────────┼─────────────────────────────┼─────────────────────────────────┤
│ ads_credit_score_df │ ads_pre_loan_indicator_df │ ads_post_loan_indicator_df │
│ (信用评分结果表) │ (贷前授信指标表) │ (贷后风险指标表) │
│ • 客户号 │ • 客户号 │ • 客户号/借据号 │
│ • 评分日期 │ • 综合信用评分 │ • 不良贷款余额 │
│ • 征信得分 │ • 建议授信额度 │ • 不良贷款率 │
│ • 资产得分 │ • 风险等级(高/中/低) │ • 风险预警总数 │
│ • 还款得分 │ • 是否建议放款 │ • 高风险预警数 │
│ • 展期得分 │ • 建议利率定价 │ • 贷后检查完成率 │
│ • 综合评分(总分) │ │ │
└─────────────────────────────┴─────────────────────────────┴─────────────────────────────────┘
│
【ETL - 规则判断】
• 预警规则匹配
• 命中名单/关键词
• 金额/笔数阈值判断
│
▼
═════════════════════════════════════════════════════════════════════════════════════════════════
【第5层:预警结果表 / 风控输出】
┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ 预警结果层 │
│ (直接推送给信贷审批/贷后部门) │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ⚠️ ads_loan_flow_warning_result │
│ (贷款资金流向预警结果表) │
│ • 预警ID │ 借据号 │ 客户名称 │ 放款金额 │ 风险类型 │ 交易对手 │ 命中金额 │ 预警等级 │
│ • 是否已处置 │ 处置结果 │ 审批人 │ 处置时间 │
│ │
│ ⚠️ ads_repay_anomaly_warning_result │
│ (还款异常预警结果表) │
│ • 预警ID │ 客户号 │ 借据号 │ 逾期天数 │ 当前五级分类 │ 剩余本金 │ 预警时间 │
│ │
│ ⚠️ ads_guarantor_risk_warning_result │
│ (担保人风险预警结果表) │
│ • 预警ID │ 合同号 │ 借款人 │ 担保人 │ 担保金额 │ 担保人征信变化 │ 风险等级 │
│ │
│ ⚠️ ads_lend_to_lend_warning_result │
│ (以贷养贷预警结果表) │
│ • 预警ID │ 客户号 │ 借据号 │ 放款时间 │ 流入小贷公司金额 │ 流入笔数 │ 预警等级 │
│ │
└───────────────────────────────────────────────────────────────────────────────────────────────┘
二、核心数据流向总结(口述版)
源系统(核心/信贷/征信/外部名单)
↓ 【Sqoop/DataX 每日抽取】
ODS贴源层(表结构与源系统一致)
↓ 【数据清洗:去重、格式统一、空值处理】
DWD明细层(清洗后的明细数据)
↓ 【轻度聚合:按客户/账户/借据汇总,计算衍生字段】
DWS汇总层(主题宽表:客户资产汇总、征信汇总、贷款流向汇总)
↓ 【规则判断 + 权重打分 + 多表关联】
ADS应用层(信用评分表、贷前指标表、贷后指标表)
↓ 【预警规则匹配:名单命中、关键词、阈值判断】
预警结果表(直接推送给业务部门:风控/贷后/审批)
三、2分钟讲清楚数据血缘
这套风控数据血缘,是从源系统到预警结果的完整链路,一共五层。
源系统包括核心、信贷、信用卡、征信解析和外部名单。通过Sqoop每日抽取到ODS层。
ODS到DWD做数据清洗------去重、格式统一、空值处理,保证数据质量。
DWD到DWS做轻度聚合------我建了客户资产汇总、征信汇总、贷款流向汇总这些宽表,供上层复用。
DWS到ADS做指标计算------比如信用评分模型,把征信得分、存款得分、还款得分按权重汇总,得到综合评分。
最后ADS到预警结果表------通过规则判断,命中公检法名单或小贷关键词,就生成预警记录,推送给贷后部门处理。
这套链路覆盖了贷前授信、贷中评分、贷后预警三个环节,数据是逐层加工的,每一层职责清晰。