2. 金融数据质量基础
在金融数据工程中,“数据质量”不是一句口号,而是一组可被定义、可被度量、可被治理的属性集合。Great Expectations(GX)之所以能成为数据质量实战工具,是因为它把抽象的“质量”拆解为可执行的期望(Expectation),并让这些期望直接作用于数据批次。理解数据质量的维度,是设计期望规则的前提。
一、核心原理:数据质量的六个关键维度
金融行业对数据质量的要求远高于一般行业,因为数据直接关联资金、交易、客户权益和监管报送。业界通常从以下维度衡量数据质量:
- 完整性(Completeness):关键字段是否缺失。例如客户身份证号、交易金额、证券代码不能为空。
- 准确性(Accuracy):数据是否真实反映业务事实。例如成交价格是否在当日涨跌停范围内。
- 一致性(Consistency):同一数据在不同系统、不同表中是否一致。例如总账与明细账的余额是否匹配。
- 及时性(Timeliness):数据是否在约定时间窗口内到达。例如日终清算数据必须在 T+1 上午 8 点前就绪。
- 唯一性(Uniqueness):主键或业务键是否重复。例如同一笔交易不能被重复入账。
- 有效性(Validity):数据是否符合格式、范围、枚举或业务规则。例如币种必须属于 ISO 4217 标准列表。
这六个维度并非孤立存在。一个字段可能同时涉及完整性与有效性,一张表可能同时要求唯一性与一致性。在 GX 中,每个维度都可以映射为一组 Expectation,例如 expect_column_values_to_not_be_null 对应完整性,expect_column_values_to_be_between 对应有效性。
二、常见金融数据问题与场景
在真实金融数据链路中,数据问题往往不是单一维度失效,而是多个维度交织。以下是最常见的几类问题:
| 问题类型 | 典型表现 | 涉及维度 | GX 期望示例 |
|---|---|---|---|
| 空值缺失 | 客户风险等级为空,导致无法授信 | 完整性 | expect_column_values_to_not_be_null |
| 重复入账 | 同一交易流水号出现两次 | 唯一性 | expect_column_values_to_be_unique |
| 格式错误 | 日期写成 2024/13/45 | 有效性 | expect_column_values_to_match_strftime_format |
| 跨系统不一致 | 支付系统与清算系统金额不等 | 一致性 | expect_column_pair_values_to_be_equal |
| 延迟到达 | 行情数据晚于开盘时间 | 及时性 | expect_column_max_to_be_between |
| 异常值 | 成交价格超出涨跌停范围 | 准确性 | expect_column_values_to_be_between |
三、数据质量与合规风控的关系
金融监管对数据质量有明确要求。例如反洗钱(AML)要求客户身份信息完整、交易记录可追溯;资本充足率报送要求数据准确、口径一致;证券交易要求行情与成交数据及时、无重复。数据质量问题一旦进入合规报送或风控模型,可能直接导致监管处罚、错误授信或风险漏判。
从风控视角看,数据质量是模型输入的生命线。信用评分模型依赖客户收入、负债、逾期记录等字段;如果这些字段存在缺失或异常,模型输出就会失真。从合规视角看,数据质量是报送可信度的基础。监管机构越来越倾向于“数据驱动监管”,即直接抽取机构数据进行分析,数据质量问题会直接暴露。
四、误区与复盘:不要只做“事后校验”
很多团队在数据质量建设中容易陷入以下误区:
- 只校验结果表,不校验中间层。问题在源头产生,却在报表层才发现,修复成本极高。
- 期望规则过于宽松。例如只校验非空,不校验取值范围,导致异常值流入下游。
- 没有分级告警。所有失败都发同一种告警,导致关键问题被淹没。
- 忽略及时性维度。数据虽然准确,但到达太晚,风控决策已经完成。
复盘时,建议按“维度—字段—期望—告警级别”四列建立清单,并定期回顾失败率最高的期望规则。GX 的 Data Docs 可以自动生成校验报告,帮助团队快速定位问题字段和失败原因。
# 示例:为交易金额字段建立多维度期望
expect_column_values_to_not_be_null(column="trade_amount") # 完整性
expect_column_values_to_be_between(column="trade_amount", min_value=0.01, max_value=100000000) # 有效性
expect_column_values_to_be_of_type(column="trade_amount", type_="float") # 有效性
expect_column_values_to_be_unique(column="trade_id") # 唯一性
掌握数据质量维度、常见问题形态以及其与合规风控的因果关系,是后续使用 Great Expectations 设计期望规则、搭建校验流水线的认知基础。只有先把“质量”定义清楚,工具才能真正发挥作用。