面向托管场景的 SAS Viya 替代方案

寻找 Viya 替代方案的人,通常并不是在找一个装到笔记本上的东西。他们有一批 SAS 语言的工作跑在某个集中的地方——一个有人登录的浏览器,或者一条调用平台并等待结果的流水线。Jenner 覆盖的正是这两者:一个托管的 JupyterLab 工作区,以及一个执行程序并返回输出的 HTTP 端点。

简短的回答

Jenner 是 SAS 9.4 语言的洁净室实现,用 Rust 编写,并且是托管的。团队在浏览器里登录 JupyterLab 工作区,打开手头已有的程序直接运行——不在任何机器上安装东西,任何一层都不需要 SAS 授权。同一个引擎也响应 HTTP,因此定时作业或 AI 智能体可以送来程序,再读回日志、列表输出和运行产生的数据集。

谁登录,运行什么

工作区是共享的:分析师、复核人和统计人员面对同一批文件,而不是互相传数据集。程序仍是 SAS 语法——DATA 步、PROC SQL、宏功能——工作区直接读取 SAS7BDAT 和 XPT,也支持 CSV 与 Parquet。如果某部分工作确实更适合放在笔记本上,同一个引擎还有原生 Mac 应用,托管与本地并非二选一。

托管这一侧能给你什么

抵达同一个引擎的三条路径。选哪条是部署问题,不是重写问题。

浏览器中的 JupyterLab 工作区

登录后你就在 JupyterLab 里,组织的文件和 Jenner 内核已经挂好。任何机器上都不安装东西,这通常正是重点:新同事从一个浏览器标签页就能拿到可用环境,一台被严格管控的公司笔记本,和工作站一样是合格的客户端。

通过 HTTP 执行程序

引擎同样响应 HTTP 请求。把程序和输入送过去,返回的是列表输出、日志、退出码,以及本次运行产生的每个数据集,都是结构化的 JSON。这让它能被编排器、CI 作业或 AI 智能体调用——它们都没法坐在交互式会话前面,等着人来点一下。

100 个有文档的过程

目录按过程逐个公开,每个都有参考页,写明它接受的语句和选项。在托管平台上,这比一个标题数字更重要:搬迁负载之前,问题是这个具体的 PROC 带着这些具体的选项在不在——而这件事读文档就能定,不必等谁签字。

你已经有的文件

Jenner 直接读取 SAS7BDAT,也支持 XPT、CSV 和 Parquet,并能写回。数据集无需先做一道转换就能进入工作区,输出也能以下游下一步期待的格式离开。

什么时候别的更合适

四种我们不是正确答案的情形。知道自己属于哪一种,比一张功能表更有价值。

Altair SLC

Altair SLC(原 WPS)同样能在没有 SAS 授权的情况下运行 SAS 语言程序,而且做这件事的时间比我们长得多。如果长期积累对你比托管工作区更重要——别人早已踩过你的边界情况并让它被修好——那是站在他们那边的真实理由,你应该拿自己的程序把两边都估一遍。

用 Python 或 R 重写

如果代码量不大,或者你本来就打算重建,那就用 Python 或 R 重写。把二十个程序搬到 pandas 或 tidyverse 大约两周,问题从此永久解决,而且落在更好招人的技术栈上。让 SAS 语言的代码保持原样运行更划算的情形是:量很大、已经过验证,而重写意味着把每个数字重新验证一遍,而不只是重新敲一遍。

留在原地

SAS 把 Viya 描述为在语言之上带有可视化与模型管理工具的平台。如果使用它的人主要在那些界面里工作而不是写代码,那么一个 SAS 语言引擎替换掉的是他们接触的那一半中错的一半,搬迁的代价会超过收益。真正适合这一页的,是把使用落在程序上的团队——DATA 步、PROC、宏。

我们没有覆盖的部分

Jenner 实现了 100 个有文档的过程和 SAS 语言的很大一部分,但两者都不是全部。如果你的工作依赖我们还没做的东西,它就跑不起来,而你会在第一个下午就发现,而不是在一个项目之后。我们也比这页上提到的其他方案更年轻,身后别人踩过的边界情况年头更少。过程参考全文公开,所以在作出任何承诺之前就能核对覆盖范围。

常见问题

如果你用 Viya 实际在做的事情就是运行 SAS 语言程序,那就是 Jenner。它是用 Rust 写的 SAS 9.4 语言洁净室实现,以团队登录的 JupyterLab 工作区形式托管,自动化的部分通过 HTTP 触达。任何一层都不需要 SAS 授权。如果你的使用更多是点选操作而不是写代码,上面关于留在原地的那一节才是更诚实的答案。

程序可以。DATA 步、PROC SQL、宏功能,以及 100 个有文档的过程,都能在 Jenner 上运行,下面不压着任何 SAS 软件,因为它是独立实现,而不是调用别处的前端。搬不过来的是那些本来就不是程序的东西:在点选界面里拼出来的内容不是 SAS 语言代码,引擎没有可执行的对象。

它是托管的,重叠之处就在这里。你会得到一个浏览器工作区,JupyterLab 跑在我们运维的容器上,在组织内共享,另外还有一条给作业和智能体用的 HTTP 路径。它比一整套分析套件小——是一个引擎加上运行它的地方,而不是一份应用清单。对于工作就是 SAS 程序的团队,这通常是承重的那一半。

它们跟着你走。Jenner 直接读取 SAS7BDAT,也支持 XPT、CSV 和 Parquet,并能写回:数据集不经转换就落进工作区,结果也能按同事期待的样子出去。这也正是能一个负载一个负载地搬、而不必安排一个没人愿意担责的切换周末的原因。

可以——那就是 HTTP 路径,完全不需要浏览器。调度器、CI 作业或智能体把程序和输入发过去,收到列表输出、日志、退出码和 JSON 形式的数据集,中间不必保持会话。它和工作区跑的是同一个引擎,所以有人交互式写出来的程序,就是流水线执行的那个程序。

挑一份你一眼就能认出输出的报表,在工作区里跑一遍,再用 PROC COMPARE 按你自己设定的容差比较两个输出数据集。在工作区里这是一次便宜的评估——不用安装,也不用先采购——而它产出的是关于你自己数字的证据,不是关于我们说法的证据。把比较保存成笔记本,它还会成为几个月后验证复核人能读的材料。

Altair SLC 同样能在没有 SAS 授权的情况下运行 SAS 语言程序,而且比我们做得久得多。如果长期积累比浏览器工作区更重要,就去要一份报价,然后用你自己的程序而不是任何一方的功能清单去检验两边。比起你选我们,我们更希望你选对的那个。

有时候是的。如果 SAS 代码不多,或者团队反正要离开这门语言,用 Python 或 R 重写——pandas、tidyverse——能把问题一次了结,并把你放到更好招人的技术栈上。保持原样运行更划算的情形是:量很大、已经过验证,而重写意味着把每个数字重新验证一遍,而不只是重新敲一遍。

不能,说能的人没有数过。我们对这门语言的覆盖很广,但并未覆盖全部,撞上空缺的程序会明确失败,而不是悄悄出错。过程参考逐条列出存在的语句,而把你自己的程序放进工作区跑一遍,一个下午就能替你的资产给出答案,不必走一轮采购。

在我们的基础设施上,不在你们的。托管工作区意味着你放进去的文件位于由我们运维的机器上——这就是不必安装、不必打补丁所换来的代价。你们组织掌控的是对工作区的访问权限,这与持有磁盘并不是一回事,而这个区别值得在审计问起之前就说清楚。如果某份数据不能放在别人的硬件上,同一个引擎可以作为原生 Mac 应用和命令行可执行文件在你们自己的机器上运行,来回切换时程序不用改。

其实不必。笔记本就是一个敲程序、然后在旁边看日志和输出出现的地方,这就是你本来的循环。程序仍是 SAS 语法,变的是窗口而不是代码——如果你压根不想碰笔记本,HTTP 路径和命令行会原封不动地运行同一个 .sas 文件。

拿你自己的程序试一次

在浏览器里登录工作区——无需安装,也无需 SAS 授权。

开始免费试用