4. 风险数据集市核心概念

风险数据聚合层解决的是“把分散的风险数据收拢、清洗、对齐”的问题,而风险数据集市解决的是“让特定风险主题的使用者能快速、稳定、可解释地取数”的问题。两者是上下游关系,但定位完全不同。理解风险数据集市,必须抓住四个关键词:面向主题、面向分析、集成、随时间变化。本节围绕集市定义、主题域划分、维度建模基础,以及它与数据仓库的区别与联系展开。

一、集市定义:从“数据湖”到“风险专柜”

风险数据集市(Risk Data Mart)是面向特定风险主题、经过集成与轻量建模、直接服务于分析、报表、监控和模型取数的数据集合。它不是原始数据的堆积,也不是全行级数据仓库的简单复制,而是从风险数据聚合层中抽取、加工、组织后形成的“风险专柜”。

一个合格的风险数据集市通常具备以下特征:

  • 主题明确:只服务一个或少数几个风险主题,如信用风险、市场风险、操作风险、流动性风险。
  • 口径统一:指标定义、币种、时间基准、客户主键、机构层级在集市内保持一致。
  • 查询高效:面向分析场景做预聚合、宽表化和分区裁剪,避免全表扫描。
  • 可追溯:每个指标能回溯到聚合层的源表、加工逻辑和版本。
  • 权限隔离:按主题域和敏感级别控制访问,满足风险数据合规要求。
集市不是“越小越好”。过窄会导致跨主题分析反复拼接,过宽又会退化成第二个数据仓库。判断标准是:该主题的常用分析路径能否在集市内闭环完成。

二、主题域划分:风险集市的边界设计

主题域划分是风险数据集市设计的第一步,决定了后续建模、开发和治理的边界。常见划分方式有两种:按风险类型划分,或按业务过程划分。实际项目中通常以风险类型为主轴,再按业务过程细分。

主题域 核心业务过程 典型事实 常用维度
信用风险 授信、放款、还款、逾期、核销 敞口、违约金额、逾期天数、拨备 客户、产品、机构、行业、期限
市场风险 交易、估值、盯市、限额监控 VaR、DV01、损益、敞口 交易簿、工具、币种、曲线、交易员
操作风险 事件登记、损失归集、整改跟踪 事件数、损失金额、整改完成率 事件类型、部门、流程、严重度
流动性风险 现金流预测、压力测试、头寸监控 缺口、LCR、NSFR、融资集中度 时间桶、币种、机构、压力情景

划分主题域时要避免两个极端:一是按部门划分,导致同一风险被切碎;二是划分过粗,导致信用风险集市里塞入市场风险数据,口径互相污染。推荐做法是“风险类型 + 业务过程”二维定位,每个集市只覆盖一个主风险类型下的若干业务过程。

三、维度建模基础:事实、维度与一致性

风险数据集市最常用的建模方法是维度建模,核心是事实表和维度表。事实表存储可度量的业务过程结果,维度表存储分析视角。风险场景中,事实通常是金额、比率、天数、笔数,维度通常是客户、机构、产品、时间、风险分类。

维度建模有三种基本模式:

  1. 星型模型:一张事实表直接关联多张维度表,结构简单,查询性能好,适合大多数风险集市。
  2. 雪花模型:维度表进一步规范化,减少冗余,但关联层级多,查询复杂度上升。
  3. 星座模型:多张事实表共享一致性维度,适合跨主题分析,如信用风险与市场风险共用客户和机构维度。

风险集市建模的关键不是选星型还是雪花,而是保证一致性维度。例如客户维度在信用风险集市和流动性风险集市中必须使用同一套客户主键和机构层级,否则跨主题汇总时会出现口径断裂。

-- 风险集市典型星型模型示例:信用风险敞口集市
CREATE TABLE dm_credit_exposure_fact (
  stat_date        DATE        NOT NULL,  -- 统计日期
  customer_sk      BIGINT      NOT NULL,  -- 客户代理键
  org_sk           BIGINT      NOT NULL,  -- 机构代理键
  product_sk       BIGINT      NOT NULL,  -- 产品代理键
  exposure_amt     DECIMAL(20,2),         -- 敞口金额
  overdue_days     INT,                   -- 逾期天数
  pd_rate          DECIMAL(10,6),         -- 违约概率
  lgd_rate         DECIMAL(10,6),         -- 违约损失率
  provision_amt    DECIMAL(20,2)          -- 拨备金额
)
PARTITION BY RANGE (stat_date);

-- 一致性维度:客户维度
CREATE TABLE dm_customer_dim (
  customer_sk      BIGINT      PRIMARY KEY,
  customer_id      VARCHAR(64),
  customer_name    VARCHAR(128),
  industry_code    VARCHAR(32),
  rating_level     VARCHAR(8),
  effective_date   DATE,
  expiry_date      DATE
);
风险集市中不要直接使用业务系统主键作为维度主键。业务主键可能变更、复用或跨系统冲突,必须通过代理键和缓慢变化维(SCD)保留历史状态,否则回溯历史风险指标时会失真。

四、与数据仓库的区别与联系

风险数据集市与风险数据仓库经常被混为一谈,但二者在定位、粒度、范围和治理方式上差异明显。数据仓库是全行级、面向多主题、保留历史明细的集成数据平台;数据集市是部门级或主题级、面向分析、可适度冗余的消费层。

对比项 风险数据仓库 风险数据集市
范围 全行、跨风险类型 单一或少数风险主题
粒度 明细级、历史全量 明细或轻度汇总
建模 范式化与维度建模结合 以维度建模为主
服务对象 全行数据平台、监管报送 风险分析、监控、模型
更新频率 批量为主,周期较长 可按日、小时甚至准实时
冗余程度 低冗余,强调一致性 允许适度冗余,强调性能

二者的联系同样紧密:数据仓库和聚合层是集市的数据来源,集市是仓库在风险领域的消费出口。没有聚合层提供的统一客户、机构、产品主数据,集市就会变成口径孤岛;没有集市的反哺,仓库也难以发现哪些风险指标最需要被沉淀和治理。

风险数据分层与集市定位 源系统 信贷 / 交易 / 押品 事件 / 头寸 风险数据聚合层 清洗 / 对齐 / 主数据 统一口径与血缘 风险数据仓库 全行级 / 历史明细 监管报送 / 跨主题 风险数据集市 面向主题 / 维度建模 分析 / 监控 / 模型 风险应用 报表 / 预警 / 压力测试 模型训练 / 监管报送 抽取 集成 主题化 消费 沉淀

五、常见误区与复盘要点

风险数据集市建设中最常见的误区有四个:

  • 把集市当仓库用:试图在集市里保留全量历史明细,导致存储和加工成本失控。
  • 主题域划分过细:每个风险类型建一个独立集市,维度不共享,跨主题分析无法闭环。
  • 忽略一致性维度:客户、机构、产品维度各建各的,汇总结果对不上。
  • 缺少血缘与版本:指标口径变更后无法回溯,监管问询时说不清数据来源。
复盘时建议用三个问题检验集市设计:第一,该主题的常用分析能否在集市内完成?第二,跨主题汇总时维度是否一致?第三,任一指标能否在五分钟内定位到源表和加工逻辑?三个问题都能回答“是”,集市才算真正可用。

总结来看,风险数据集市是风险数据聚合层之上的主题化消费层。它以维度建模为基础,以主题域划分为边界,以一致性维度为纽带,与数据仓库形成“仓库沉淀、集市消费”的协作关系。掌握这四个核心概念,是后续设计集市模型、指标体系和加工链路的前提。