38、在 SAS 中使用 ODS 进行可视化及数据网络服务

在 SAS 中使用 ODS 进行可视化及数据网络服务

1. 连接 Snowflake 中的数据

21 世纪初,数据库、数据仓库和数据湖在全球范围内不断扩张,这使得许多 SAS 服务器在这个时期被建立或扩展。这些服务器通常是实体服务器,设置在托管数据仓库的组织现场的服务器机房中。

这些服务器机房是安全的物理场所,能够容纳各种数据或应用程序,因此这样的服务器机房可以为 SAS 数据仓库而设置。然而,服务器和服务器机房的空间是有限的,机房只能容纳一定数量的硬件,这意味着机房本身只能存储有限的数据量。而且,机房中的许多服务器是应用服务器,用于运行应用程序,而非存储数据的数据服务器。随着时间的推移,许多 SAS 数据仓库被数据填满,没有扩展的空间。

当数据仓库满了之后,通常的做法是使用云存储来解决。首先要设置云存储并建立连接,将其作为暂存区域。例如,当 SAS 数据仓库空间不足,而我们又想运行刚编写好的报告时,可能仓库中没有足够的空间进行数据操作。这时可以连接到像 Snowflake 这样的云存储,使用数据步骤将需要处理的数据临时移动到 Snowflake 中,然后基于此运行报告。虽然数据移动可能会影响 I/O 性能,但如果只是从仓库中提取少量数据进行报告,影响可能不大。

若要连接到 Snowflake,第一步是建立与 Snowflake 数据库的 ODBC 连接,示例代码如下:

LIBNAME snow SASIOSNF
    server = "saspartner.snowflakecomputing.com"
    user = mwahi
    password = TAM813fla
    schema = HCDW
    database = USERS_DB
    warehouse = USERS_WH
    dbcommit = 10000
    autocommit = no
    readbuff = 30000
    insertbuff = 30000;
RUN;

对这段代码的详细解释如下:
- 这是一个长的 libname 语句,以分号结尾,将 Snowflake 数据库映射到 snow 库名。代码主要是为 LIBNAME 命令设置选项和参数。
- 使用的引擎是 SASIOSNF,这是用于访问 Snowflake 的引擎。
- 要访问的 Snowflake 云数据库位于服务器 saspartner.snowflakecomputing.com 上,用户名为 mwahi,密码是 TAM813fla。
- 所有数据存储在名为 HCDW(医疗保健数据仓库)的模式中。用户 mwahi 在 HCDW 模式中访问的数据库是 USERS_DB,该模式中可能还有一个供开发人员使用的 DEVELOPERS_DB 数据库。在 USERS_DB 中,有一个专门为用户设置的仓库 USERS_WH, warehouse = USERS_WH 使 mwahi 能够访问该仓库。
- dbcommit autocommit readbuff insertbuff 选项会修改 LIBNAME 连接在事务处理和内存使用方面的行为。由于 Snowflake 连接有很多可设置的选项,建议阅读原始 SAS 文档获取相关信息。

如果上述 LIBNAME 代码运行成功,用户 mwahi 就可以使用 snow 库名来访问 Snowflake 数据仓库中的表。例如,如果名为 Chap12_1 的演示数据集位于映射到 snow 的数据仓库 USERS_WH 中,就可以使用 snow.Chap12_1 来引用它。

2. 使用 ODS 将 SAS 数据服务到 Web

过去,SAS 报告主要以打印格式呈现。如今,SAS 已经发展,我们可以使用输出交付系统(ODS)将数据和报告服务到 Web。ODS 最初发明时具有革命性意义,它首次允许从 SAS 输出图形,并且不断更新,最终能够以 HTM 格式输出图形,便于在 Web 上显示。

在使用 SAS 编程在 Web 上显示图形时,ODS 背后的功能似乎变得不那么明显,因为我们会使用不同的工具,如 SAS Enterprise Guide 和 SAS Viya 来开发使用 ODS 的 SAS 程序。

2.1 通过 Web 与 SAS 数据交互

以行为风险因素监测系统(BRFSS)数据的在线可视化平台为例,该平台使用 SAS 工具构建。BRFSS 是美国每年通过电话进行的匿名健康调查,核心调查数据以 *.sas7bdat 格式提供下载,美国政府还提供了在线查询数据的可视化平台。

下面以查看明尼苏达州的指标为例,介绍该平台的界面操作步骤:
1. 设置查询参数 :在页面顶部的 A 区域设置总体查询参数。例如,选择“Tobacco use”类别后,界面会动态调整,只允许选择有限的主题,这里选择“Current Smoker Status”,并选择年份为 2018,然后点击“GO”按钮。
2. 更新图形区域 :点击“GO”后,B 区域会自动更新。在点击“GO”之前,该区域会显示旧的查询参数。可视化页面首次加载时,图形区域默认显示“Alcohol Consumption”。B 区域在点击“GO”后才会更新,更新后会有更多查询参数可供选择,这里选择“Crude prevalence”作为数据类型。
3. 切换显示方式 :C 区域有两个切换按钮,左边的按钮使 B 区域以柱状图显示(默认),点击右边的按钮可以切换到显示一个小表格,该表格提供实际百分比和估计值的置信区间。
4. 查看注释信息 :页面底部的 D 区域提供注释和其他信息,该区域会随着查询参数的更新而动态更新。

从这个示例可以看出,将 SAS 数据服务到 Web 涉及多个步骤:
1. 在页面顶部设置查询参数并点击“GO”按钮,在设置参数的过程中,查询也在进行,例如选择不同的类别会更新主题选项。
2. 点击“GO”会启动 SAS 中的 PROCs 和数据步骤,这些步骤接收来自 Web 界面的输入(如选择的州和其他参数),并将结果返回给 Web 供用户查看(如 2018 年明尼苏达州当前烟草吸烟者比率的图表)。
3. 当 B 区域填充数据后,可以更新另一个参数“Data type”,更新该参数会启动 PROCs 和数据步骤来刷新该区域。

为了更好地组织这些步骤,许多将 SAS 数据服务到 Web 的程序员喜欢使用 SAS Enterprise Guide。

3. 使用 SAS Enterprise Guide

在考虑将数据服务到 Web 时,以下编程工具对 SAS 数据仓库程序员很有帮助:
- 事件序列可视化 :了解用户点击“GO”按钮后发生的一系列事件的可视化路径很有帮助,这些事件包括一系列的数据步骤和 PROCs,它们会更新 Web 界面。能够可视化这些步骤(本质上是 SAS 代码片段)有助于理解和解决整个过程中的问题。
- 不同数据存储的可视化菜单 :运行 SAS 数据仓库时,开发人员通常需要通过 SAS 定期连接到许多 SAS 和非 SAS 数据库及数据存储。例如,BRFSS 界面连接了不同年份的数据集,拥有一个易于导航的面板或菜单来管理这些数据集会很方便。
- 按需调用其他有用的 SAS 窗口 :SAS 软件提供了一些有用的窗口,如 SAS 编辑器(编写代码时进行颜色编码)、SAS 日志文件(有助于了解数据处理和 SAS 环境)以及 SAS 图形输出窗口。但在某些 SAS 版本中,启动和导航这些窗口可能不太方便,因此一个能更轻松使用这些窗口的界面会很受欢迎。

为了解决这些问题,SAS 发明了 SAS Enterprise Guide。该工具的第一个版本于 1999 年发布,这与 SAS 从封闭环境向连接外部环境(如 SQL 数据库和 Web 界面)过渡的时间相吻合。

SAS Enterprise Guide 的界面具有以下特点:
- 事件序列可视化 :“Process Flow”和“Process Tree”窗口可以帮助可视化这些步骤,还有其他方式可以可视化步骤并与 SAS Enterprise Guide 交互以修改代码和处理过程。
- 不同数据存储的可视化菜单 :虽然在图中未显示,但 SAS Enterprise Guide 提供了连接和导航不同数据存储的方式,这些存储可以在 SAS 窗口中可视化,这使得 SAS 数据仓库开发人员能够更轻松地同时管理多个数据集的 ETL 过程。
- 按需调用其他有用的 SAS 窗口 :界面中显示了一些窗口,如“Tasks”窗口、“Results”窗口和“Program”窗口,这些窗口可以为程序员提供当前工作的多维视图以及编程快捷方式。此外,还有许多其他窗口和可视化方式可供选择,界面可根据程序员的需求进行定制。

SAS Enterprise Guide 多年来经历了多次升级,目前的版本是用于桌面客户端应用程序的,适用于多个不同的 SAS 版本,因此更新频繁。不过,它最初并非作为 Web 应用程序开发,当前版本仍带有那个时代应用程序的外观和感觉。由于它是 1999 年为帮助管理 SAS 数据项目而推出的应用程序,并且一直得到支持,到 2020 年已成为许多 SAS 工作场所的重要软件。未来它需要持续得到支持,并且新版本需要保持向后兼容性,除非 SAS 开发新的方法来取代它。

许多程序员发现 SAS Enterprise Guide 在管理数据仓库方面很有帮助,但新程序员可能会觉得它有些过时,并且不支持 Web。对 SAS 面向 Web 的产品感兴趣的程序员可以考虑 SAS Viya。

4. 使用 SAS Viya

SAS Viya 的理念是升级 SAS 的分析平台,特别是在与 Web 交互方面进行改进。2016 年 SAS 全球论坛宣布了 SAS Viya,部分 SAS 可视化分析和 SAS 可视化统计功能被转换为 HTML5 界面。此后,其他分析功能也被集成到 Viya 中,并且 SAS 一直在不断改进它。

SAS Viya 是一个分析套件,类似于亚马逊网络服务(AWS)对于加载到亚马逊服务器的数据的作用。它有许多子组件可用于不同的任务,这里介绍与数据仓库相关的子组件——SAS Data Preparation。

数据仓库涉及大量的提取、转换和加载(ETL)协议,而 SAS Data Preparation 专门为 ETL 而开发。它可以帮助完成以下活动:
- 数据探查 :可以使用 SAS Viya 探查工具进行数据发现,界面类似于 SAS 大学版,数据步骤的结果会立即显示在窗口中,并且易于导航,还有其他有助于数据探查的面板,如图形面板。
- ETL 准备 :界面屏幕被分割成多个窗口,在一个窗口中运行转换步骤,结果会立即在另一个窗口中显示,还有一个面板可以导航这些步骤,这允许我们实时交互式编辑代码,确保所有转换后的变量正确显示。
- ETL 作业调度 :在完善 ETL 代码后,可以使用 SAS Data Studio 制定 ETL 作业计划并进行调度。在 SAS 中能够调度 ETL 作业非常有用,因为可以安排在系统用户较少时运行,以优化 I/O 性能。

不过,将 SAS 企业指南的配置解构并迁移到 SAS Viya 会有一定的开销,这是现有 SAS 工作场所决定是否将部分或全部工作从 SAS 企业指南迁移到 SAS Viya 时的主要考虑因素。

5. 使用 SAS 企业指南和 SAS Viya 直接向 Web 报告

现在,我们可以直接使用 SAS 代码,或者通过 SAS 企业指南或 SAS Viya 等平台来使用 ODS 将数据报告到 Web。对于使用 SAS 企业指南的用户,如果想创建像 BRFSS 那样的 Web 可视化,可以参考相关的 SAS 白皮书。而对于 SAS Viya,根据是否有预期的用户交互,有不同的方法将 SAS 数据直接报告到 Web。由于 SAS Viya 仍在不断开发中,建议从 SAS 官方获取最新信息以指导如何直接从 SAS 数据存储向 Web 报告。

综上所述,在 SAS 中进行数据可视化和服务到 Web 有多种工具和方法可供选择,每种工具都有其特点和适用场景,用户可以根据自己的需求和实际情况进行选择和使用。

在 SAS 中使用 ODS 进行可视化及数据网络服务

6. 工具对比与选择建议

为了帮助大家更好地选择适合自己的工具,下面对本文介绍的几种工具进行对比分析,具体内容如下表所示:
|工具|特点|适用场景|缺点|
| ---- | ---- | ---- | ---- |
|ODS|可将数据和报告服务到 Web,最初允许从 SAS 输出图形,能以 HTM 格式输出图形便于在 Web 显示|需要将 SAS 数据以图形等形式展示在 Web 上,且对工具简单易用性有一定要求|在复杂 Web 交互场景下功能不够强大|
|SAS Enterprise Guide|提供事件序列可视化、不同数据存储的可视化菜单以及按需调用其他有用 SAS 窗口的功能,可通过菜单和代码控制 SAS 代码包括 ODS|管理数据仓库,需要对 SAS 代码进行全面控制和管理,且对操作界面可视化有需求|最初不是 Web 应用程序,界面有旧时代风格,对新程序员来说可能显得过时,且不支持 Web|
|SAS Viya|升级了 SAS 分析平台,与 Web 交互性好,有许多子组件可用于不同任务,如 SAS Data Preparation 专门用于 ETL|需要进行复杂的数据分析和处理,特别是涉及大量 ETL 操作,且希望与 Web 有良好交互的场景|将 SAS 企业指南的配置迁移到 SAS Viya 有开销|

根据以上对比,我们可以得到以下选择建议:
- 如果只是简单地将 SAS 数据以基本图形形式展示在 Web 上,ODS 是一个不错的基础选择。
- 对于有一定经验的程序员,在管理数据仓库、需要对 SAS 代码进行全面控制和操作,且对操作界面可视化有需求时,SAS Enterprise Guide 能提供较好的支持。
- 当面临复杂的数据分析和处理任务,特别是涉及大量 ETL 操作,并且希望与 Web 有良好交互时,SAS Viya 是更合适的选择,但需要考虑迁移成本。

7. 实际应用流程示例

为了更清晰地展示如何在实际中使用这些工具将 SAS 数据服务到 Web,下面给出一个简化的流程示例,其 mermaid 流程图如下:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始]):::startend --> B{选择工具}:::decision
    B -->|ODS| C(设置 ODS 输出格式为 Web 支持格式):::process
    B -->|SAS Enterprise Guide| D(使用界面工具设置数据连接和查询参数):::process
    B -->|SAS Viya| E(使用 SAS Data Preparation 进行 ETL 操作):::process
    C --> F(运行 SAS 代码生成报告):::process
    D --> F
    E --> F
    F --> G(将报告发布到 Web):::process
    G --> H([结束]):::startend

具体操作步骤如下:
1. 选择工具 :根据自身需求和实际情况,从 ODS、SAS Enterprise Guide 和 SAS Viya 中选择合适的工具。
2. 工具操作
- 使用 ODS :设置 ODS 输出格式为 Web 支持的格式,如 HTM 格式。
- 使用 SAS Enterprise Guide :利用其界面工具设置数据连接和查询参数,可通过“Process Flow”和“Process Tree”窗口可视化操作步骤。
- 使用 SAS Viya :使用 SAS Data Preparation 进行 ETL 操作,包括数据探查、ETL 准备和 ETL 作业调度。
3. 生成报告 :运行相应的 SAS 代码生成报告。
4. 发布报告 :将生成的报告发布到 Web 上,供用户查看。

8. 总结与展望

在当今数字化时代,数据的可视化和网络服务变得越来越重要。在 SAS 环境中,我们有多种工具可以实现将数据可视化并服务到 Web 的目标。ODS 为我们提供了基础的图形输出和 Web 服务功能,SAS Enterprise Guide 以其可视化和全面控制的特点帮助我们管理数据仓库,而 SAS Viya 则在升级分析平台和与 Web 交互方面展现出强大的优势。

未来,随着技术的不断发展,这些工具可能会有更多的改进和创新。例如,ODS 可能会进一步增强其在复杂 Web 交互场景下的功能;SAS Enterprise Guide 可能会进行界面和功能的现代化升级,以适应新的编程需求;SAS Viya 可能会集成更多的分析功能和优化 ETL 操作,降低迁移成本。同时,我们也期待会有更多新的工具和方法出现,为数据的可视化和网络服务带来更多的可能性。

总之,无论是现在还是未来,我们都可以根据自己的需求和实际情况,灵活选择合适的工具,将 SAS 数据更好地服务到 Web,为数据分析和决策提供有力支持。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值