SAS 迁移至 Microsoft Fabric ― 路线图与技术要点

Table of Contents
SAS 迁移至 Microsoft Fabric:路线图与技术要点
本指南的目标
- 用“改写、协同、保留”三种方式对 SAS 资产分类,避免一刀切
- 给出从代码收集到上线的完整步骤
- 说明 SAS 与 Spark 之间最容易导致结果偏差的差异
- 说明如何准备模型验证与审计需要的一致性证据
- 介绍 Pulse Convert 如何自动化转换(初始自动转换准确率 70%~90%)
- 联系邮箱:Admin@innovationalofficesolution.com
一、迁移的动因
在国内金融机构中,SAS 长期承担着风控数据准备、评分卡开发、减值计算、监管报送底稿和客户分析等关键工作。推动迁移的通常是以下几个因素的叠加:
- 人才结构:新入职的数据工程师和建模人员以 Python、SQL 为主,SAS 宏代码的维护越来越依赖少数资深员工
- 数据位置:数据已经汇集到云端或数据湖,为了用 SAS 分析还要再复制一份到 SAS 服务器
- 算力弹性:月末、季末集中计算需要按峰值配置服务器,平时资源闲置
- 平台整合:如果报表已经在 Power BI 上,把数据加工也放到 Microsoft Fabric,可以让数据、加工与报表处于同一平台和同一权限体系
二、改写、协同、保留:三种处理方式
| 处理方式 | 适用的 SAS 资产 | 说明 |
|---|---|---|
| 改写 | 数据准备、加工、汇总与报表(DATA 步、PROC SQL、SORT、MEANS) | 转换为 Fabric 中的 PySpark 与 Spark SQL,由 Python/SQL 团队维护 |
| 协同 | 短期内无法替换、已通过验证的统计模型 | SAS 提供面向 Fabric 的 SAS Decision Builder 工作负载与 OneLake 连接,可在过渡期协同使用 |
| 保留或下线 | 一年以上未运行的程序、一次性分析 | 不迁移,归档后下线 |
在大多数机构中,数据准备与加工占 SAS 代码的绝大部分,这正是迁移收益最大的部分。
三、迁移步骤
1. 收集:汇总全部 .sas 文件、Enterprise Guide 项目、%INCLUDE 链和调度配置
2. 血缘分析:梳理每个程序读写哪些数据集,确定迁移顺序
3. 宏展开:先把宏展开为实际执行的代码,再对展开结果进行转换
4. Lakehouse 设计:在 OneLake 中按 Bronze、Silver、Gold 组织数据,把 SAS 逻辑库映射为 Lakehouse 与 Delta 表
5. 代码转换:DATA 步与 PROC 转为 PySpark 与 Spark SQL,宏转为 Python 函数与参数化 Notebook
6. 数据迁移:.sas7bdat 数据集转为 Delta 表,特别注意数值精度与日期
7. 一致性验证:逐个程序比对 SAS 与 Fabric 的输出
8. 编排与上线:批处理作业改为 Data Factory 管道,至少并行运行一个月末周期后再停用 SAS 作业
四、五个容易导致结果偏差的差异
1. 缺失值:SAS 中数值缺失被视为最小值,“if x < 0”对缺失值成立;Spark 中与 NULL 比较结果为 NULL,记录被过滤。风控规则中大量阈值判断都要逐条核对。
2. MERGE 与 JOIN:SAS 的 MERGE 在多对多时不产生笛卡尔积,SQL 的 JOIN 会。迁移前需检查关联键唯一性。
3. 隐式排序:BY 组处理依赖已排序的数据,FIRST. 与 LAST. 的结果取决于顺序;Spark 不保证顺序,必须用窗口函数显式指定。
4. 中文编码:历史数据集常以 GBK 或 EUC-CN 保存,部分程序按字节截取中文字符串。转为 UTF-8 后,一个汉字的字节数变化,SUBSTR 的结果会不同,需按字符重写。
5. 日期与精度:SAS 日期是从 1960 年 1 月 1 日起的天数;金额类字段在 Fabric 中应使用明确精度的 DECIMAL。
五、一致性证据怎么准备
金融机构的迁移往往需要向模型验证、内审说明“结果没有变”。建议为每个程序保存以下证据:
- 行数与主键差异
- 各列合计值
- 缺失值与 NULL 数量
- 关键变量的分布(均值、分位数)
- 评分类程序的分数分布对比与逐条差异清单
这些证据应作为迁移档案的一部分统一保存。
六、SAS 与 Microsoft Fabric 对照表
| SAS | Microsoft Fabric |
|---|---|
| DATA 步 | PySpark Notebook |
| FIRST. / LAST. / RETAIN / LAG | 窗口函数 |
| MERGE(BY) | join / Delta MERGE |
| PROC SQL | Spark SQL / Warehouse T-SQL |
| PROC SORT NODUPKEY | 显式排序 + dropDuplicates |
| PROC MEANS / FREQ / TRANSPOSE | groupBy().agg() / crosstab / pivot |
| PROC FORMAT | Delta 映射表 |
| 宏(%MACRO、%LET、CALL SYMPUT) | Python 函数 / 参数化 Notebook |
| .sas7bdat 数据集 | OneLake 中的 Delta 表 |
| LIBNAME | Lakehouse 与架构 |
| 批处理作业 | Data Factory 管道 |
| ODS 输出 | Power BI 报表 |
七、案例参考:Emulus Consulting
Emulus Consulting 为一家消费金融公司完成迁移:
- SAS 程序 980 个、宏 230 个,下线 17%
- 改写程序 760 个,协同保留统计模型 52 个
- 缺失值相关判断 1,680 处逐条核对并改写
- 初始自动转换准确率 81%,项目周期 22 周
- 月末风控数据加工从 9 小时缩短至 1 小时 20 分钟
- SAS 服务器与许可成本降低 45%
八、Pulse Convert 如何加速迁移
- 代码解析:DATA 步、PROC 与宏转换为抽象语法树,并自动展开宏
- 自动转换:生成可读的 PySpark 与 Spark SQL,初始自动转换准确率 70%~90%
- 血缘图:自动梳理程序、数据集与调度依赖,规划迁移批次
- PulseQA:自动比对行数、主键、合计、缺失值与变量分布
- 证据包:为模型验证与内审生成一致性证据
常见问题(FAQ)
立即开始
- 免费 POC:免费 POC(Pulse Convert)
- 官网:innovationalofficesolution.com
- 邮箱:Admin@innovationalofficesolution.com
将 SAS 业务与风控代码平稳迁移至 Microsoft Fabric
以‘改写、协同、保留’清晰策略,将 SAS DATA 步、PROC SQL、宏与批处理作业迁移至 Fabric PySpark Notebook 与 Lakehouse。初始自动转换准确率 70%~90%。