2. 核心概念:聚合查询在风控中的应用、批次与偏移的定义、常见业务场景
2.1 聚合查询在风控中的核心价值
在授信决策引擎中,聚合查询(Aggregation Query)是衡量申请人整体风险轮廓的关键手段。它通过对多笔交易、多张申请表、多个关联实体进行统计汇总,将碎片化数据转化为可决策的风险指标。
| 聚合维度 | 典型SQL函数 | 风控含义 |
|---|---|---|
| 计数 | COUNT(*) |
近30天申请次数、关联设备数 |
| 求和 | SUM(amount) |
近7天总交易金额、总负债 |
| 均值 | AVG(amount) |
平均单笔消费金额、平均借款周期 |
| 最值 | MAX/MIN |
最大单笔逾期金额、最早注册时间 |
| 分组统计 | GROUP BY |
按渠道、按产品、按地区统计风险分布 |
关键认知:聚合查询将“点状数据”升维为“面状特征”,是规则引擎与模型评分的重要输入源。没有聚合,决策引擎只能看到单笔交易,无法识别多头借贷、团伙欺诈等复杂风险。
2.2 批次(Batch)与偏移(Offset)的定义
在授信决策引擎中,数据通常按批次(Batch)组织,每个批次包含一批同时到达或同时处理的申请记录。偏移(Offset)则用于在批次内部定位具体的数据行。
| 概念 | 定义 | SQL 中的体现 | 风控场景示例 |
|---|---|---|---|
| 批次(Batch) | 一组按时间、渠道或任务ID聚合的数据集合 | batch_id 字段、PARTITION BY batch_id |
2025-01-15 上午10:00 进件的所有申请 |
| 偏移(Offset) | 批次内数据行的相对位置(从0开始) | ROW_NUMBER() OVER (PARTITION BY batch_id ORDER BY ...) |
每个批次中的第3条申请记录 |
| 批次偏移定位 | 通过批次标识 + 偏移量精确锁定数据行 | WHERE batch_id = 'B20250115' AND offset = 3 |
定位特定批次中的特定申请进行复核 |
记忆口诀:“批次定范围,偏移定位置”。批次是“抽屉”,偏移是“抽屉里的第几层”。两者结合,实现精准的数据行定位。
2.3 常见业务场景
批次偏移定位技巧在授信决策引擎中广泛应用于以下场景:
- 批次内抽样复核:从每个批次中抽取固定偏移位置的申请进行人工审核,确保抽样均匀覆盖。
- 增量特征计算:只对新增批次(而非全量数据)进行聚合计算,大幅降低计算开销。
- 断点续跑:当聚合任务失败时,从失败的批次偏移位置重新开始,避免重复计算。
- 分页展示与导出:按批次+偏移实现高效分页,避免使用
OFFSET ... LIMIT导致的性能问题。 - 数据对账与校验:定位特定批次中的特定记录进行金额、状态核对。
| 场景 | 传统做法 | 批次偏移定位做法 | 性能提升 |
|---|---|---|---|
| 抽样复核 | 随机抽取,无法保证批次覆盖 | 按批次+固定偏移抽取 | 抽样更均匀,可追溯 |
| 增量计算 | 扫描全表,过滤时间戳 | 只扫描指定批次 | 减少 90%+ 扫描量 |
| 分页查询 | OFFSET 10000 LIMIT 20 |
WHERE batch_id='B1' AND offset BETWEEN 0 AND 19 |
避免大偏移量扫描 |
常见误区:不要将“批次偏移定位”等同于简单的
LIMIT ... OFFSET 分页。批次偏移定位的核心在于先按业务批次分组,再在组内定位,而非全局偏移。全局偏移在数据量增大时性能急剧下降,而批次偏移定位的性能几乎不受数据总量影响。
2.4 批次偏移定位的SQL实现雏形
以下是一个典型的批次偏移定位SQL模板,展示了如何为每个批次内的记录生成偏移量:
-- 为每个批次内的申请记录生成偏移量(从0开始)
SELECT
batch_id,
application_id,
user_name,
apply_amount,
ROW_NUMBER() OVER (
PARTITION BY batch_id
ORDER BY apply_time ASC, application_id ASC
) - 1 AS offset_in_batch
FROM
application_records
WHERE
batch_id = 'B20250115'; -- 只处理指定批次
在实际风控系统中,batch_id 通常由上游系统生成,格式如 YYYYMMDD_HHMMSS_渠道编码,确保全局唯一且按时间有序。偏移量则通过窗口函数 ROW_NUMBER() 在批次内排序生成,作为后续精准定位的“坐标”。