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

12 Nov 202610 分钟阅读views 0comments 0
SAS 迁移至 Microsoft Fabric ― 路线图与技术要点 — Innovational Office Solution

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 对照表

SASMicrosoft Fabric
DATA 步PySpark Notebook
FIRST. / LAST. / RETAIN / LAG窗口函数
MERGE(BY)join / Delta MERGE
PROC SQLSpark SQL / Warehouse T-SQL
PROC SORT NODUPKEY显式排序 + dropDuplicates
PROC MEANS / FREQ / TRANSPOSEgroupBy().agg() / crosstab / pivot
PROC FORMATDelta 映射表
宏(%MACRO、%LET、CALL SYMPUT)Python 函数 / 参数化 Notebook
.sas7bdat 数据集OneLake 中的 Delta 表
LIBNAMELakehouse 与架构
批处理作业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)

A.不必。建议先迁移数据准备与加工,统计模型与模型验证团队逐个评估。
A.可以。生成的 PySpark 代码结构清晰,并保留与原 SAS 程序的对应注释。
A.可以。每个程序在 Fabric 版本通过一致性验证并获批之前,继续在 SAS 中运行。
A.我们会在迁移前统一处理编码,并对中文字符串截取逻辑逐一核对。
A.我们会免费转换您选定的 5 个 SAS 程序(建议包含宏与 BY 组处理),并提供 PySpark 代码与一致性报告。

立即开始

免费 POC(概念验证)
Microsoft Solution Partner

将 SAS 业务与风控代码平稳迁移至 Microsoft Fabric

以‘改写、协同、保留’清晰策略,将 SAS DATA 步、PROC SQL、宏与批处理作业迁移至 Fabric PySpark Notebook 与 Lakehouse。初始自动转换准确率 70%~90%。

初始自动转换准确率 70%~90%免费 POC:迁移 5 个代表性 SAS 程序严格比对数值精度、缺失值与排序微软官方 Data & AI 解决方案合作伙伴
发布方:Office Solution AI Labs(Microsoft 解决方案合作伙伴 - Data & AI)
#中文#SAS#Microsoft Fabric#PySpark#Lakehouse#风控分析#案例研究

Contact Us

Advance Analytics of next generation

We are an authorized implementation partner of Snowflake, Databricks, Amazon, Automation Anywhere, Denodo, DataDog, New Relic, and Elastic.

Copyrights © 2026 Office Solution AI Labs