2. 核心概念:聚合查询在风控中的应用、批次与偏移的定义、常见业务场景

2.1 聚合查询在风控中的核心价值

在授信决策引擎中,聚合查询(Aggregation Query)是衡量申请人整体风险轮廓的关键手段。它通过对多笔交易、多张申请表、多个关联实体进行统计汇总,将碎片化数据转化为可决策的风险指标。

聚合维度 典型SQL函数 风控含义
计数 COUNT(*) 近30天申请次数、关联设备数
求和 SUM(amount) 近7天总交易金额、总负债
均值 AVG(amount) 平均单笔消费金额、平均借款周期
最值 MAX/MIN 最大单笔逾期金额、最早注册时间
分组统计 GROUP BY 按渠道、按产品、按地区统计风险分布
关键认知:聚合查询将“点状数据”升维为“面状特征”,是规则引擎与模型评分的重要输入源。没有聚合,决策引擎只能看到单笔交易,无法识别多头借贷、团伙欺诈等复杂风险。
聚合查询在风控决策链路中的位置 原始交易数据 用户申请表 外部征信报告 SQL 聚合查询(COUNT / SUM / AVG / 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 定位特定批次中的特定申请进行复核
记忆口诀:“批次定范围,偏移定位置”。批次是“抽屉”,偏移是“抽屉里的第几层”。两者结合,实现精准的数据行定位。
批次与偏移的层次结构 批次(Batch)— 按时间/渠道划分的数据集合 偏移 0 申请ID: A1001 | 用户: 张三 | 金额: 5000 偏移 1 申请ID: A1002 | 用户: 李四 | 金额: 12000 偏移 2 申请ID: A1003 | 用户: 王五 | 金额: 8000 偏移 3 申请ID: A1004 | 用户: 赵六 | 金额: 3000 定位语法 WHERE batch_id = 'B20250115' AND offset = 2 → 精确命中 申请ID: A1003 (王五)

2.3 常见业务场景

批次偏移定位技巧在授信决策引擎中广泛应用于以下场景:

  1. 批次内抽样复核:从每个批次中抽取固定偏移位置的申请进行人工审核,确保抽样均匀覆盖。
  2. 增量特征计算:只对新增批次(而非全量数据)进行聚合计算,大幅降低计算开销。
  3. 断点续跑:当聚合任务失败时,从失败的批次偏移位置重新开始,避免重复计算。
  4. 分页展示与导出:按批次+偏移实现高效分页,避免使用 OFFSET ... LIMIT 导致的性能问题。
  5. 数据对账与校验:定位特定批次中的特定记录进行金额、状态核对。
场景 传统做法 批次偏移定位做法 性能提升
抽样复核 随机抽取,无法保证批次覆盖 按批次+固定偏移抽取 抽样更均匀,可追溯
增量计算 扫描全表,过滤时间戳 只扫描指定批次 减少 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() 在批次内排序生成,作为后续精准定位的“坐标”。