3. 数据源与数据仓库:常见金融数据源与实体表设计
金融实体解析的底层依赖是高质量、多源的数据。本章聚焦金融领域常见的数据源类型、数据仓库分层架构以及核心实体表的设计原则,为后续的 SQL 回放对比分析奠定数据基础。
3.1 常见金融数据源
金融业务系统通常按职能划分为交易、风控、CRM 三大核心域,各域数据特征差异显著。
| 数据域 | 典型系统 | 数据特征 | 更新频率 | 实体解析关注点 |
|---|---|---|---|---|
| 交易 | 核心银行、证券交易、支付网关 | 高并发、强事务、流水明细 | 实时/准实时 | 交易对手方识别、账户关联 |
| 风控 | 反欺诈、信用评估、合规筛查 | 多维度、标签化、黑白名单 | 准实时/批量 | 黑名单实体、关联风险图谱 |
| CRM | 客户关系管理、营销平台 | 主数据、分层、画像标签 | 批量(T+1) | 客户统一视图、集团关系 |
数据源对齐提示: 在实体解析回放场景中,交易数据提供“行为证据”,CRM 提供“身份基准”,风控数据提供“风险标记”。三者缺一不可。
3.2 数据仓库分层架构(ODS/DWD/DWS/ADS)
金融数据仓库通常采用四层标准分层,每一层承担不同的数据加工与实体解析职责。
- ODS(操作数据存储层): 直接贴源,保留业务系统原始快照,不做或少做清洗。用于回放原始交易流水。
- DWD(明细数据层): 对 ODS 数据进行标准化、去重、字段补齐,形成干净的明细事实表。实体 ID 在此层完成初步映射。
- DWS(汇总数据层): 按实体维度(客户、账户、产品)进行轻度汇总,生成宽表。用于实体画像与聚合分析。
- ADS(应用数据层): 面向具体业务需求(如实体解析对比报表)构建的集市表,直接支撑 SQL 回放分析。
3.3 核心实体表设计
实体表是数据仓库中描述业务对象的“骨架”。在金融场景中,以下三类实体表最为关键:
3.3.1 客户实体表(Customer Entity Table)
- 主键: customer_id(统一客户标识)
- 核心字段: 证件类型、证件号码、客户名称、手机号、邮箱、地址、客户层级、开户日期
- 实体解析字段: golden_id(全局唯一 ID)、match_rule_id(匹配规则编号)、merge_status(合并状态)
3.3.2 账户实体表(Account Entity Table)
- 主键: account_id
- 核心字段: 账户类型、币种、余额、开户机构、状态
- 实体解析字段: customer_id(所属客户)、account_group_id(账户组标识)、is_primary(是否主账户)
3.3.3 交易实体表(Transaction Entity Table)
- 主键: transaction_id
- 核心字段: 交易金额、交易时间、交易渠道、交易类型、对手方信息
- 实体解析字段: from_entity_id(发起方实体)、to_entity_id(接收方实体)、txn_entity_link(交易实体关联)
设计要点: 实体表必须保留“解析链路字段”(如 match_rule_id、merge_version),以便在回放对比时追溯每次实体匹配的依据和变更历史。
3.4 实体表设计示例 SQL
以下为 DWD 层客户实体表的建表语句示例,包含实体解析专用字段:
CREATE TABLE dwd_customer_entity (
customer_id STRING COMMENT '统一客户标识',
id_type STRING COMMENT '证件类型',
id_number STRING COMMENT '证件号码',
customer_name STRING COMMENT '客户名称',
mobile_phone STRING COMMENT '手机号',
email STRING COMMENT '邮箱',
golden_id STRING COMMENT '全局统一实体ID',
match_rule_id STRING COMMENT '匹配规则编号',
merge_status STRING COMMENT '合并状态: 0-未合并, 1-主实体, 2-从实体',
merge_version INT COMMENT '合并版本号,用于回放对比',
etl_time TIMESTAMP COMMENT 'ETL处理时间'
)
PARTITIONED BY (dt STRING COMMENT '数据日期分区')
STORED AS ORC
TBLPROPERTIES ('transactional'='true');
回放对比关键字段:
merge_version 和 match_rule_id 是回放分析的核心。每次实体解析规则变更或数据重跑时,版本号递增,SQL 回放通过对比不同版本的实体关联结果来评估解析效果。
3.5 实体解析回放的数据依赖关系
回放对比分析需要从多个分层中提取数据,其依赖关系如下:
3.6 实体表设计避坑清单
| 常见问题 | 后果 | 正确做法 |
|---|---|---|
| 缺少 golden_id 字段 | 无法跨系统关联实体 | 每张实体表保留统一实体标识 |
| 未记录 merge_version | 回放无法追溯版本变化 | 每次规则变更递增版本号 |
| 实体表与事实表无外键约束 | 数据一致性差 | 在 DWD 层建立实体 ID 外键关联 |
| 忽略历史快照 | 无法回放历史状态 | ODS 层保留全量历史快照 |
最佳实践: 在 DWD 层实体表中增加
batch_id 和 rule_version 字段,配合分区字段 dt,可以精确回放到任意时间点的实体解析结果,是 SQL 回放对比分析的基础保障。