寻找 Viya 替代方案的人,通常并不是在找一个装到笔记本上的东西。他们有一批 SAS 语言的工作跑在某个集中的地方——一个有人登录的浏览器,或者一条调用平台并等待结果的流水线。Jenner 覆盖的正是这两者:一个托管的 JupyterLab 工作区,以及一个执行程序并返回输出的 HTTP 端点。
Jenner 是 SAS 9.4 语言的洁净室实现,用 Rust 编写,并且是托管的。团队在浏览器里登录 JupyterLab 工作区,打开手头已有的程序直接运行——不在任何机器上安装东西,任何一层都不需要 SAS 授权。同一个引擎也响应 HTTP,因此定时作业或 AI 智能体可以送来程序,再读回日志、列表输出和运行产生的数据集。
工作区是共享的:分析师、复核人和统计人员面对同一批文件,而不是互相传数据集。程序仍是 SAS 语法——DATA 步、PROC SQL、宏功能——工作区直接读取 SAS7BDAT 和 XPT,也支持 CSV 与 Parquet。如果某部分工作确实更适合放在笔记本上,同一个引擎还有原生 Mac 应用,托管与本地并非二选一。
抵达同一个引擎的三条路径。选哪条是部署问题,不是重写问题。
登录后你就在 JupyterLab 里,组织的文件和 Jenner 内核已经挂好。任何机器上都不安装东西,这通常正是重点:新同事从一个浏览器标签页就能拿到可用环境,一台被严格管控的公司笔记本,和工作站一样是合格的客户端。
引擎同样响应 HTTP 请求。把程序和输入送过去,返回的是列表输出、日志、退出码,以及本次运行产生的每个数据集,都是结构化的 JSON。这让它能被编排器、CI 作业或 AI 智能体调用——它们都没法坐在交互式会话前面,等着人来点一下。
目录按过程逐个公开,每个都有参考页,写明它接受的语句和选项。在托管平台上,这比一个标题数字更重要:搬迁负载之前,问题是这个具体的 PROC 带着这些具体的选项在不在——而这件事读文档就能定,不必等谁签字。
Jenner 直接读取 SAS7BDAT,也支持 XPT、CSV 和 Parquet,并能写回。数据集无需先做一道转换就能进入工作区,输出也能以下游下一步期待的格式离开。
四种我们不是正确答案的情形。知道自己属于哪一种,比一张功能表更有价值。
Altair SLC(原 WPS)同样能在没有 SAS 授权的情况下运行 SAS 语言程序,而且做这件事的时间比我们长得多。如果长期积累对你比托管工作区更重要——别人早已踩过你的边界情况并让它被修好——那是站在他们那边的真实理由,你应该拿自己的程序把两边都估一遍。
如果代码量不大,或者你本来就打算重建,那就用 Python 或 R 重写。把二十个程序搬到 pandas 或 tidyverse 大约两周,问题从此永久解决,而且落在更好招人的技术栈上。让 SAS 语言的代码保持原样运行更划算的情形是:量很大、已经过验证,而重写意味着把每个数字重新验证一遍,而不只是重新敲一遍。
SAS 把 Viya 描述为在语言之上带有可视化与模型管理工具的平台。如果使用它的人主要在那些界面里工作而不是写代码,那么一个 SAS 语言引擎替换掉的是他们接触的那一半中错的一半,搬迁的代价会超过收益。真正适合这一页的,是把使用落在程序上的团队——DATA 步、PROC、宏。
Jenner 实现了 100 个有文档的过程和 SAS 语言的很大一部分,但两者都不是全部。如果你的工作依赖我们还没做的东西,它就跑不起来,而你会在第一个下午就发现,而不是在一个项目之后。我们也比这页上提到的其他方案更年轻,身后别人踩过的边界情况年头更少。过程参考全文公开,所以在作出任何承诺之前就能核对覆盖范围。