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 期望规则 Expectation Suite Checkpoint 校验 合规报送 监管数据准确 风控决策 反洗钱/授信 数据质量维度通过 GX 规则落地,最终支撑合规与风控两条防线

二、常见金融数据问题与场景

在真实金融数据链路中,数据问题往往不是单一维度失效,而是多个维度交织。以下是最常见的几类问题:

问题类型 典型表现 涉及维度 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
实战提示:在 GX 中,建议先对每个关键字段建立“维度—期望”映射表,再编写 Expectation Suite。这样既能覆盖全面,又便于后续按维度统计校验通过率。

三、数据质量与合规风控的关系

金融监管对数据质量有明确要求。例如反洗钱(AML)要求客户身份信息完整、交易记录可追溯;资本充足率报送要求数据准确、口径一致;证券交易要求行情与成交数据及时、无重复。数据质量问题一旦进入合规报送或风控模型,可能直接导致监管处罚、错误授信或风险漏判。

从风控视角看,数据质量是模型输入的生命线。信用评分模型依赖客户收入、负债、逾期记录等字段;如果这些字段存在缺失或异常,模型输出就会失真。从合规视角看,数据质量是报送可信度的基础。监管机构越来越倾向于“数据驱动监管”,即直接抽取机构数据进行分析,数据质量问题会直接暴露。

核心结论:数据质量维度是“因”,GX 期望规则是“手段”,合规与风控是“果”。没有可度量的数据质量,合规风控就只能建立在沙地上。

四、误区与复盘:不要只做“事后校验”

很多团队在数据质量建设中容易陷入以下误区:

  1. 只校验结果表,不校验中间层。问题在源头产生,却在报表层才发现,修复成本极高。
  2. 期望规则过于宽松。例如只校验非空,不校验取值范围,导致异常值流入下游。
  3. 没有分级告警。所有失败都发同一种告警,导致关键问题被淹没。
  4. 忽略及时性维度。数据虽然准确,但到达太晚,风控决策已经完成。

复盘时,建议按“维度—字段—期望—告警级别”四列建立清单,并定期回顾失败率最高的期望规则。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 设计期望规则、搭建校验流水线的认知基础。只有先把“质量”定义清楚,工具才能真正发挥作用。