4. 数据源识别:核心表清单
坏账率哨兵的数据质量评估,必须从识别和解析核心数据源开始。在典型的信贷业务系统中,与坏账率计算直接相关的表通常分布在 借据、还款计划、还款流水、客户信息 和 逾期状态 五个领域。本章将逐一列出这些核心表的结构、关键字段及其在坏账率计算中的角色。
4.1 核心表总览
下表汇总了五张核心表的业务定位、数据粒度与在坏账率评估中的主要用途:
| 表名 | 业务定位 | 数据粒度 | 坏账率计算角色 |
|---|---|---|---|
| 借据表 | 记录每笔贷款的合同信息 | 每笔借据一条记录 | 提供贷款本金、放款日期、利率等分母数据 |
| 还款计划表 | 记录每期应还的金额与日期 | 每期还款一条记录 | 定义应还时间轴,用于判断是否逾期 |
| 还款流水表 | 记录客户实际还款的交易明细 | 每笔还款一条记录 | 提供实际还款金额与时间,用于计算逾期缺口 |
| 客户信息表 | 记录客户的基本属性与信用信息 | 每个客户一条记录 | 用于坏账率的分层分析(如地区、年龄、信用等级) |
| 逾期状态表 | 记录借据的逾期阶段与状态 | 每笔借据当前逾期状态一条记录 | 直接标识坏账(如逾期90天以上)的判定依据 |
数据质量提示: 在开始质量评估前,务必确认这五张表之间的主外键关系是否完整。常见的质量陷阱包括:借据表存在但还款计划表缺失对应记录、还款流水表重复记账、逾期状态表未及时更新等。
4.2 借据表(Loan Contract Table)
借据表是坏账率计算的 核心分母来源。每一笔借据代表一笔独立的贷款合同,其关键字段包括:
- 借据号(loan_id):唯一标识一笔借据,是与其他表关联的主键。
- 客户号(customer_id):关联客户信息表,用于分层分析。
- 贷款本金(principal):放款金额,是坏账率计算的分母基础。
- 放款日期(disburse_date):贷款发放时间,用于计算账龄。
- 贷款期限(loan_term):总期数,影响还款计划生成。
- 年化利率(annual_rate):用于利息计算,间接影响应还金额。
- 产品类型(product_type):区分不同信贷产品,用于分组评估。
质量关注点: 借据表中贷款本金字段的完整性、准确性与一致性。缺失本金或本金为负的记录将直接导致坏账率计算失真。
4.3 还款计划表(Repayment Schedule Table)
还款计划表定义了每笔借据的 应还时间轴,是判断是否逾期的基准。其关键字段包括:
- 计划编号(schedule_id):唯一标识每期还款计划。
- 借据号(loan_id):关联借据表。
- 期次(period):第几期还款。
- 应还日期(due_date):该期还款的截止日期。
- 应还本金(principal_due):该期应还的本金部分。
- 应还利息(interest_due):该期应还的利息部分。
- 应还总额(total_due):该期应还的本息合计。
常见数据质量问题: 还款计划表可能出现应还日期缺失、应还金额为负、期次不连续或与借据表期限不一致等问题。这些错误会直接导致逾期判断逻辑失效。
4.4 还款流水表(Repayment Transaction Table)
还款流水表记录了客户 实际还款 的每一笔交易,是计算逾期缺口的关键数据源。其关键字段包括:
- 流水号(transaction_id):唯一标识每笔还款交易。
- 借据号(loan_id):关联借据表。
- 还款日期(payment_date):实际还款发生的时间。
- 还款金额(payment_amount):实际还款的金额。
- 还款方式(payment_method):如主动还款、代扣、线下还款等。
- 交易状态(status):如成功、失败、撤销等。
质量关注点: 还款流水表最常见的质量问题是 重复记录 和 缺失记录。重复记录会导致实际还款金额虚高,掩盖逾期真相;缺失记录则会导致逾期被夸大。
4.5 客户信息表(Customer Information Table)
客户信息表用于 分层分析 坏账率,帮助识别高风险客群。其关键字段包括:
- 客户号(customer_id):唯一标识客户。
- 姓名(name):客户姓名。
- 身份证号(id_number):用于身份校验与去重。
- 手机号(phone):联系方式。
- 地区(region):客户所在地区,用于地域分析。
- 信用等级(credit_level):内部信用评分等级。
- 注册日期(reg_date):客户注册时间。
数据质量提示: 客户信息表中的身份证号、手机号等关键字段的格式校验非常重要。格式错误或重复的客户信息会导致分层分析结果偏差。
4.6 逾期状态表(Overdue Status Table)
逾期状态表是坏账率计算的 直接判定依据,通常记录每笔借据当前的逾期天数或逾期阶段。其关键字段包括:
- 借据号(loan_id):关联借据表。
- 逾期天数(overdue_days):当前逾期天数。
- 逾期阶段(overdue_stage):如 M1(1-30天)、M2(31-60天)、M3(61-90天)、M3+(90天以上)等。
- 逾期开始日期(overdue_start_date):首次逾期的日期。
- 状态更新时间(update_time):该状态记录的最后更新时间。
- 是否核销(is_charge_off):标记是否已做坏账核销处理。
常见数据质量问题: 逾期状态表可能因更新不及时导致逾期天数滞后,或逾期阶段分类错误。例如,一笔实际逾期 95 天的借据仍被标记为 M3(61-90天),这将导致坏账率被低估。
4.7 核心表关系与数据流
下图展示了五张核心表之间的关联关系与数据流向,帮助理解坏账率计算的数据链路:
4.8 核心表字段质量检查清单
在开始坏账率哨兵的数据质量评估前,建议按照以下清单对每张表的关键字段进行初步检查:
| 表名 | 关键字段 | 常见质量问题 | 检查SQL示例 |
|---|---|---|---|
| 借据表 | principal | 空值、负数、零值 | SELECT COUNT(*) FROM loan WHERE principal IS NULL OR principal <= 0; |
| 还款计划表 | due_date | 空值、未来日期、过去异常日期 | SELECT COUNT(*) FROM schedule WHERE due_date IS NULL; |
| 还款流水表 | payment_amount | 重复记录、负值、超限值 | SELECT loan_id, COUNT(*) FROM transaction GROUP BY loan_id, payment_date, payment_amount HAVING COUNT(*) > 1; |
| 客户信息表 | id_number | 格式错误、重复、空值 | SELECT COUNT(*) FROM customer WHERE id_number IS NULL OR LENGTH(id_number) != 18; |
| 逾期状态表 | overdue_days | 负数、与还款计划矛盾 | SELECT COUNT(*) FROM overdue WHERE overdue_days < 0; |
最佳实践: 建议将上述检查SQL封装为 数据质量监控脚本,在每日ETL完成后自动执行,并输出异常记录数。当异常记录数超过阈值时,触发告警通知数据治理团队。