37、深入探索 SAS 数据仓库与可视化:连接、操作与挑战

深入探索 SAS 数据仓库与可视化:连接、操作与挑战

一、SAS 数据仓库与其他系统的连接

1.1 数据服务与连接方式概述

在数据仓库的工作中,将 SAS 数据提供给其他系统以及连接 SAS 数据仓库环境与非 SAS 存储是常见需求。首先,可以准备数据提取物,异步地将其提供给其他环境。在此过程中,需要对数据进行去标识化处理,并在仓库工作流中实施。若要以星型模式提供数据,也需做好相应准备。

1.2 连接非 SAS 数据存储

可以使用 SAS/ACCESS 和 ODBC 连接将 SAS 数据仓库与非 SAS 数据存储相连。在 PROC SQL 中,视图发挥着重要作用,SAS 和 PROC SQL 语言可用于数据传输。例如,可以将 SQL 数据库中的表复制到 SAS 数据库,也能将 SAS 仓库中的表导出到 SQL 数据库。

1.3 不同场景下的数据传输选择

对于从 SQL 服务器进行定期数据传输,可以选择使用 PROC SQL 视图和宏变量。而对于提供星型模式数据,可进行 ETL 操作,为另一个仓库环境提供事实表和维度表,以便在应用程序中展示结果。

1.4 数据传输与可视化的差异

数据在实时和异步的 SAS 与非 SAS 环境之间来回传输的操作,与 SAS 数据的可视化处理有所不同。若要在外部程序中可视化 SAS 数据,需要在 SAS 中进行 ETL 操作,以便将数据正确提供给可视化软件。

1.5 常见问题思考

  • 去标识化为何在服务器而非联网环境进行? 这是为了确保数据的安全性,防止敏感信息在联网环境中泄露。
  • 支持分析师和开发人员远程工作为何重要? 可以提高工作的灵活性和效率,使他们能够在不同地点进行数据处理和分析。
  • 星型模式配置的数据仓库为何需要大量存储空间? 星型模式通常包含事实表和多个维度表,数据冗余度较高,因此需要更多空间来存储数据。
  • 使用 SAS/ACCESS 的 ODBC 连接能让 SAS 用户做什么? 可以访问非 SAS 数据存储,实现数据的交互和共享。
  • 使用 PROC SQL 视图进行非 SAS 数据库到 SAS 数据仓库的数据传输有何优势? 可以简化数据传输过程,提高数据处理效率。
  • 在哪些情况下,不使用 ODBC 连接,以更手动的方式从远程环境将数据传输到 SAS 环境会更容易? 例如当数据量较小、网络连接不稳定或对数据传输的实时性要求不高时。
  • 如何使用 PROC SQL 将数据集从 SAS 环境导出到 SQL 数据库? 可以使用 PROC SQL 的相关语句,结合 ODBC 连接,将数据导出到指定的 SQL 数据库。

二、使用 ODS 进行 SAS 数据可视化

2.1 ODS 简介

SAS 输出交付系统(ODS)是 SAS 中用于数据可视化的基本功能,它内置于 SAS 报告函数中,无需单独调用。早期,ODS 主要用于输出打印图形,报告也大多是为打印格式设计的。

2.2 打印和网络报告的挑战

2.2.1 打印报告

复杂的遗留代码,包含数组、宏变量和宏,用于 SAS 打印报告。这些代码通常需要持续维护,因此从 SAS 平台迁移此类报告具有挑战性。

2.2.2 网络报告

SAS 向网络报告也存在输入/输出(I/O)和其他限制。不过,SAS Enterprise Guide 和 SAS Viya 这两个工具可以帮助应对这些挑战。

2.3 可视化工具与应用

可以使用其他应用程序,如 R 和 Tableau,来可视化 SAS 数据。在规划 SAS 数据仓库的打印和网络报告方向时,SAS 仓库开发人员需要考虑诸多因素。

2.4 技术要求

需要使用 *.sas7bdat 格式的数据集进行演示,该数据集可在 GitHub 上获取: 数据集链接 。本章的代码包也可在 GitHub 上找到: 代码包链接

2.5 ODS 数据可视化基础

2.5.1 历史发展

早期,ODS 主要用于输出打印图形,报告也以打印格式为主。随着网络的发展,直接从数据存储向网络报告的方法逐渐兴起,但此时 SAS 的 ODS 已经存在多年,许多 SAS 机构花费了大量时间开发复杂的打印报告代码。

2.5.2 操作方法

理论上,可以通过精心操作 SAS PROCs 代码来生成理想的图形。也可以先使用 SAS 输出基本的可视化信息,再使用外部图形编辑软件进行最终编辑。

2.6 大存储挑战与解决方案

历史上,为了优化 I/O,SAS 报告主要从 SAS 格式的数据存储中提取数据。但随着时间推移,SAS 在存储大数据方面也面临挑战。许多公司选择转向云存储来解决大数据存储问题,SAS 与 Snowflake 合作,通过 ODBC 和 SAS/ACCESS 组件访问 Snowflake 数据存储。

2.7 报告中宏的使用

2.7.1 宏的发展与应用

在 SAS 的发展过程中,为了提高输出的视觉吸引力,开发了 PROC TABULATE 和新的图形 PROCs。数组、宏变量和宏在报告功能中得到了广泛应用,因为在 SAS 环境中直接使用 SAS 数据进行报告,I/O 效率最高。

2.7.2 宏的复杂性与挑战

随着新数据中异常情况的出现,需要不断向宏中添加条件,导致代码变得越来越复杂。当其他数据可视化软件(如 R 和 Tableau)出现时,将复杂的 SAS 报告代码重构到新程序中面临成本效益的考量。

2.8 示例:美国医院数据报告

2.8.1 数据集介绍

以美国医院数据集 Chap12_1 为例,该数据集包含州描述(State_Desc)、医院数量(Number_Hospitals)和配备床位数量(Staffed_Beds)等信息。

2.8.2 代码操作步骤

为了生成报告,展示拥有最多配备床位的州,可使用以下代码:

LIBNAME X "/folders/myfolders/X";
RUN;
PROC CONTENTS data=X.chap12_1 VARNUM;
RUN;

PROC SORT DATA = X.Chap12_1;
    BY DESCENDING Staffed_Beds;
RUN;
DATA _NULL_;
    SET X.Chap12_1;
    IF _N_ = 1 THEN
        CALL SYMPUT("biggest", State_Desc);
    ELSE STOP;
RUN;
PROC PRINT DATA = X.Chap12_1 NOOBS;
    WHERE State_Desc = "&biggest";
    TITLE "State &biggest has the most hospital beds.";
RUN;
2.8.3 代码解析
  • PROC SORT :对 Chap12_1 数据集按 Staffed_Beds 降序排序,使第一行具有最大的 Staffed_Beds 值。
  • DATA NULL :使用 NULL 创建并为宏变量赋值,通过 IF N = 1 选择第一行数据,并使用 CALL SYMPUT 将 State_Desc 的值赋给宏变量 biggest。
  • PROC PRINT :调用 PROC PRINT 打印符合条件的记录,并在标题中使用宏变量 biggest。
2.8.4 结果展示

运行代码后可知,在 Chap12_1 数据集中,加利福尼亚州拥有最多的配备床位,总数为 74724 张(来自 344 家医院)。

2.9 CALL SYMPUT 深入理解

CALL SYMPUT 命令可将数据步骤中产生的值赋给宏变量,这表明宏变量的值不仅可以由分析师和用户设置,还可以由数据步骤和 PROCs 的结果生成。在 SQL 中,用户设置宏变量并启动代码类似于调用存储过程,而在 SAS 中使用 CALL SYMPUT 类似于使用触发器。

2.10 报告代码反思

  • 代码复杂性 :一个简单的报告就需要至少一个数据步骤、一个 PROC 和一个宏变量,代码复杂,难以调试。
  • 扩展性挑战 :若要在县级层面运行报告,代码会更加复杂,可能需要使用数组、宏变量、宏和循环来确保报告的准确性。
  • 长期维护问题 :随着数据仓库不断加载新数据,可能会遇到数据异常,需要不断向宏中添加条件,使代码变得更长、更复杂。

通过以上内容,我们对 SAS 数据仓库与其他系统的连接,以及使用 ODS 进行数据可视化有了更深入的了解。在实际应用中,需要根据具体情况选择合适的方法和工具,以应对不同的挑战。

三、SAS 与云存储的互操作性

3.1 云存储的必要性

随着数据量的不断增长,SAS 在存储大数据方面面临挑战。许多公司选择云存储来解决这一问题,SAS 与 Snowflake 合作,通过开放数据库连接(ODBC)和 SAS/ACCESS 组件访问 Snowflake 数据存储。这样可以利用云存储的大容量和灵活性,处理和存储海量数据。

3.2 从 Snowflake 进行报告

使用 SAS 从 Snowflake 存储的数据进行报告时,需要考虑 SAS 报告代码的开发和使用。以下是一个简单的流程说明:
1. 建立连接 :通过 ODBC 和 SAS/ACCESS 组件建立与 Snowflake 数据存储的连接。
2. 数据访问 :使用 SAS 代码访问 Snowflake 中的数据,可使用 PROC SQL 等工具进行数据查询和处理。
3. 报告生成 :利用 SAS 的报告功能,结合从 Snowflake 获取的数据,生成所需的报告。

3.3 优势与挑战

  • 优势
    • 灵活性 :可以根据需要灵活调整报告内容和格式。
    • 大数据处理能力 :借助云存储,能够处理和分析大规模数据集。
    • 兼容性 :与现有的 SAS 代码和工具兼容,减少开发成本。
  • 挑战
    • 网络依赖 :需要稳定的网络连接来访问云存储的数据。
    • 安全性 :确保数据在传输和存储过程中的安全性。
    • 成本管理 :云存储和使用相关服务可能会产生一定的成本,需要进行合理的成本管理。

四、不同数据可视化工具的选择与考量

4.1 SAS 与其他工具的对比

工具 优点 缺点
SAS 强大的数据处理和分析能力,适合复杂的数据仓库操作;内置 ODS 功能,可进行多样化的报告和可视化。 代码复杂,维护成本高;学习曲线较陡。
R 丰富的统计和可视化库,开源免费;社区活跃,有大量的资源和插件。 对大规模数据处理的性能可能不如 SAS;需要一定的编程基础。
Tableau 可视化界面友好,易于使用;能够快速创建交互式可视化报表。 定制性相对较差;对于复杂的数据处理和分析功能有限。

4.2 选择建议

  • 数据规模和复杂度 :如果处理大规模、复杂的数据仓库,SAS 可能更适合;对于小规模数据和简单分析,R 或 Tableau 可能更便捷。
  • 可视化需求 :如果需要创建高度定制化、复杂的可视化报表,SAS 或 R 可能更合适;如果追求快速创建交互式可视化,Tableau 是不错的选择。
  • 团队技能和资源 :考虑团队成员的技能水平和可用资源,如果团队熟悉 SAS,继续使用 SAS 进行可视化可能更高效;如果团队有编程基础,R 可以提供更多的灵活性。

4.3 实际应用案例

假设一个医疗数据分析团队,需要对大量的患者数据进行分析和可视化。以下是不同工具的应用场景:
- SAS :用于数据仓库的管理和复杂的数据处理,如数据清洗、转换和建模。同时,利用 ODS 生成详细的打印报告,为管理层提供决策支持。
- R :进行统计分析和探索性数据分析,使用 ggplot2 等库创建高质量的可视化图表,帮助分析师深入了解数据特征。
- Tableau :创建交互式的仪表盘,展示关键指标和趋势,方便团队成员和其他部门快速获取信息。

五、总结与展望

5.1 总结

本文深入探讨了 SAS 数据仓库与其他系统的连接、使用 ODS 进行数据可视化、SAS 与云存储的互操作性以及不同数据可视化工具的选择。我们了解到,SAS 在数据仓库和可视化方面具有强大的功能,但也面临代码复杂、维护成本高的挑战。同时,云存储为 SAS 处理大数据提供了新的解决方案,而不同的可视化工具各有优缺点,需要根据具体需求进行选择。

5.2 展望

随着数据技术的不断发展,SAS 可能会进一步优化其功能,降低代码复杂度,提高用户体验。云存储和大数据技术的不断进步也将为 SAS 带来更多的机遇,使其能够更好地处理和分析海量数据。此外,不同可视化工具之间的融合和集成可能会成为未来的趋势,为用户提供更全面、便捷的数据分析和可视化解决方案。

在实际应用中,我们需要不断学习和探索,结合具体业务需求,选择合适的工具和方法,以提高数据分析和决策的效率和质量。

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 -->|SAS 本地存储| C(使用 SAS 处理数据):::process
    B -->|Snowflake 云存储| D(建立 ODBC 连接):::process
    D --> E(使用 SAS 访问数据):::process
    C --> F(数据处理和分析):::process
    E --> F
    F --> G{选择可视化工具}:::decision
    G -->|SAS ODS| H(生成打印或网络报告):::process
    G -->|R| I(使用 R 库进行可视化):::process
    G -->|Tableau| J(创建交互式仪表盘):::process
    H --> K([结束]):::startend
    I --> K
    J --> K

以上流程图展示了从数据存储选择到可视化呈现的整体流程,涵盖了不同数据存储方式和可视化工具的应用。通过这个流程,我们可以更清晰地理解在实际应用中如何根据具体情况选择合适的方法和工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值