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

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

1. 数据仓库结构概述

在数据处理中,数据仓库的结构至关重要。许多数据仓库采用典型的关系结构,通过主键和外键将表连接在一起,这种结构可以用实体 - 关系图(ERD,也称为模式)来表示。

1.1 关系结构示例

以大学学生注册数据库的 ERD 为例,图中的每个框代表一个数据表,框内列出了表中的变量。例如,“Lecturer” 表包含与讲师相关的变量,其中 “Employee_ID” 是主键。而在 “Course” 表中,“Employee_ID” 作为外键,用于跟踪分配给课程的讲师。连接 “Lecturer” 表的 “Employee_ID” 主键和 “Course” 表的 “Lecturer_ID” 外键的线的形状表明这是一种一对多的关系,即每个讲师可能对应多门课程。

1.2 关系结构与业务数据库

大多数业务生产数据库也采用关系结构,但这些数据库是为支持特定业务流程而定制的,例如大学学生注册流程。而数据仓库则设计了不同的关系结构,以支持分析师使用转换后的数据进行分析。与业务环境中管理生产数据库相比,在数据仓库环境中加载数据需要执行更多的 ETL 操作。不过,有业务数据库 ETL 经验的人会发现数据仓库工作虽有所不同,但也很熟悉。

1.3 星型模式结构

除了关系结构,还有一种专门为数据仓库优化的结构——星型模式(也称为立方体结构)。与关系数据库不同,数据仓库中分析师的主要工作是查询数据,而不是编辑数据。星型模式就是为了完全优化数据查询而开发的,不考虑数据编辑。

2. 星型模式概念理解

2.1 星型模式原理示例

为了理解星型模式,我们以股票经纪公司为例。假设我们想查询某只股票的收盘价,传统的关系查询需要在包含所有上市公司的表和每日股票价格表之间进行关联,这会花费一些时间。但如果我们创建一个数据集市,将 2018 年公司跟踪的所有股票数据整合到一个巨大的 Excel 表格中,这个表格包含了 2018 年的每一天、公司跟踪的每一家有股票的公司以及每天每只股票的收盘价。这样,查询时就无需进行表连接,也不需要使用主键或外键,查询速度会非常快。

2.2 星型模式特点

星型模式虽然与上述示例不完全相同,但遵循了一些相同的原则:
- 包含非常大且长的表,查询效率高。
- 尽量减少查询中的连接操作。
- 时间周期的公式(如最大值、平均值等)已经预先计算好,查询时无需实时运行公式,只需查找预先计算好的指标。
- 时间周期非常重要,不同的时间周期需要不同的计算数据。例如,如果要按天、月、季度和年聚合指标,就需要进行四组计算。

2.3 星型模式设计示例

我们以一个假设的数据仓库为例,该仓库用于研究美国退伍军人退伍后的生活质量(QoL)。仓库包含以下数据:
- 年度 BRFSS 健康调查数据:每年在线发布,包含退伍军人身份、健康状况和行为信息以及州的 FIPS 代码。
- 人口普查薪资数据:关于美国各州退伍军人薪资的人口普查数据,可在线获取。
- 州医院数据:来自美国医院目录(AHD)的各州医院数据,可在线获取。

由于我们希望能够比较各州之间的差异,且这些数据集都包含州变量,因此分析师可能会进行大量的州级查询。基于此,我们可以创建一个 “state_fact” 事实表,该表除了自身的主键外,完全由外键组成。同时,我们还需要三个维度表:“brfss_dim” 用于 BRFSS 数据,“census_dim” 用于人口普查数据,“ahd_dim” 用于 AHD 医院数据。

以下是星型模式设计的一些特点:
| 表格名称 | 特点描述 |
| ---- | ---- |
| state_fact | 仅包含变量的键 |
| time_dim | 包含月份、季度和年份的变量,但不包含周、日或更短时间周期的变量 |
| census_dim 和 ahd_dim | 提供地理区域的汇总统计信息,如各州退伍军人薪资统计和各州医院数量 |
| brfss_dim | 其中的汇总统计信息(如 “rate_vets”)是从个人级别的 BRFSS 数据集计算得出的 |

2.4 星型模式查询示例

假设我们想查看佛罗里达州退伍军人的百分比以及该州的医院数量,并选择按年查询。应用程序将执行以下操作:
1. 使用 “state_fact” 表过滤出与佛罗里达州和年份相关的行。
2. 由于退伍军人比率数据在 “brfss_dim” 表中,医院数量数据在 “ahd_dim” 表中,因此只使用这些表与 “state_fact” 表进行连接,而不执行与 “census_dim” 表的连接。

这个简单的示例展示了星型模式如何显著加快查询处理时间。虽然 SAS 不像 IBM Cognos 那样专门用于提供星型模式,但 SAS 可以对大数据进行 ETL 操作,创建用于星型模式软件的大表。

3. 连接非 SAS 数据存储

3.1 SAS 的 ODBC 连接能力

在 SAS 的早期,其环境相对封闭,原始数据主要通过静态媒体将 .txt 和 .csv 文件加载到 SAS 服务器。而现在,SAS 具备了开放数据库连接(ODBC)能力,程序员可以使用 SAS/ACCESS 组件打开与其他数据库的 ODBC 连接,查询并提取数据到 SAS 环境中。不过,SAS 大学版不提供此功能。

3.2 SQL 视图的理解

在 SQL 中,打开与远程 SQL 数据库的连接是常见操作,并且有一套创建视图的命令。视图是一种不修改底层数据,而是提供数据视图的选择查询。

假设我们是美国人口普查的 SQL 程序员,想要将另一个 SQL 数据库中的数据转移到自己的环境中,需要完成以下步骤:
1. 建立连接 :首先,建立与远程 SQL 数据库环境的连接,通过 SQL 界面导航找到要查询的表,这些表包含我们想要转移的数据。
2. 创建选择视图以准备数据转移查询 :使用 SQL 界面创建选择查询视图,类似于 SAS 中 “PROC REPORT” 的演示。例如,远程 SQL 系统的表包含所有美国州的数据,但我们只需要佛罗里达州的记录,并且只需要源表中的几列。

graph LR
    A[建立连接] --> B[找到要查询的表]
    B --> C[创建选择视图]
    C --> D[准备数据转移]

通过以上步骤,我们可以更好地理解如何在 SAS 环境中连接非 SAS 数据存储,并利用 SQL 视图进行数据转移。

4. SAS 与非 SAS 数据存储连接的实际操作

4.1 使用 PROC SQL 进行数据转移

在 SAS 中,我们可以使用 PROC SQL 来实现与非 SAS 数据存储的连接和数据转移。虽然还有其他方法,如使用 PROC DBLOAD 从 SAS 向 Microsoft SQL 转移数据,但这里我们重点介绍 PROC SQL。

以下是使用 PROC SQL 连接到非 SAS 数据存储并进行数据操作的一般步骤:
1. 建立连接 :使用 SAS/ACCESS 组件通过 ODBC 连接到目标数据库。这通常需要在 SAS 中配置连接信息,如数据库驱动程序、服务器地址、用户名和密码等。
2. 编写 SQL 查询 :在 PROC SQL 语句中编写查询语句,用于从目标数据库中选择所需的数据。例如,我们可以使用 SELECT 语句选择特定列和行的数据。
3. 执行查询并导入数据 :运行 PROC SQL 语句,将查询结果导入到 SAS 数据集。

以下是一个简单的示例代码:

PROC SQL;
    CONNECT TO odbc AS my_conn (DSN=my_dsn USER=my_user PASSWORD=my_password);
    CREATE TABLE my_sas_dataset AS
        SELECT *
        FROM CONNECTION TO my_conn
            (SELECT column1, column2
             FROM remote_table
             WHERE condition);
    DISCONNECT FROM my_conn;
QUIT;

4.2 数据过滤与视图创建

在使用 PROC SQL 进行数据查询时,我们可以对数据进行过滤,类似于在 SQL 中创建视图的操作。例如,我们有一个包含多个州数据的数据集,我们可以只选择其中一个州的数据进行查看,但不改变原始数据集。

以下是一个示例代码:

PROC SQL;
    CREATE VIEW my_view AS
        SELECT *
        FROM my_sas_dataset
        WHERE state = 'Florida';
QUIT;

在这个示例中,我们创建了一个名为 “my_view” 的视图,它只包含佛罗里达州的数据。当我们查询这个视图时,实际上是在查询原始数据集中符合条件的部分,但原始数据集保持不变。

4.3 数据转移与保存

在将数据从非 SAS 数据存储转移到 SAS 环境后,我们可能需要将结果保存为新的数据集。可以使用以下代码将视图中的数据保存为新的数据集:

PROC SQL;
    CREATE TABLE new_dataset AS
        SELECT *
        FROM my_view;
QUIT;

这样,我们就将视图中的数据保存为一个新的 SAS 数据集 “new_dataset”。

5. 总结与应用场景

5.1 不同结构的优势总结

  • 关系结构 :适用于需要频繁编辑和查询数据的业务场景,如业务生产数据库。它通过主键和外键将表连接起来,能够很好地支持复杂的业务流程。
  • 星型模式 :专门为数据仓库优化,适合分析师进行大量的查询操作。它通过减少表连接和预先计算指标,提高了查询速度。

5.2 应用场景分析

  • 业务数据库 :在业务生产环境中,关系结构的数据库能够满足日常业务的需求,如订单管理、客户信息管理等。
  • 数据仓库 :对于需要进行数据分析和决策支持的场景,星型模式的数据仓库能够快速提供所需的信息,如市场趋势分析、销售业绩分析等。

5.3 未来发展趋势

随着数据量的不断增长和数据分析需求的增加,数据仓库和数据处理技术将不断发展。未来,我们可能会看到更多的混合结构和优化算法,以提高数据处理的效率和准确性。同时,与其他技术的集成,如人工智能和机器学习,也将为数据分析带来更多的可能性。

以下是不同结构在不同场景下的应用对比表格:
| 结构类型 | 适用场景 | 优势 |
| ---- | ---- | ---- |
| 关系结构 | 业务生产数据库 | 支持复杂业务流程,方便数据编辑和查询 |
| 星型模式 | 数据仓库 | 提高查询速度,适合数据分析 |

通过对 SAS 数据仓库与其他系统连接的深入了解,我们可以根据不同的业务需求选择合适的结构和方法,实现数据的高效处理和分析。无论是关系结构还是星型模式,都有其独特的优势和应用场景,我们需要根据实际情况进行合理的选择和运用。同时,掌握 SAS 与非 SAS 数据存储的连接技术,能够让我们更好地整合不同来源的数据,为业务决策提供更有力的支持。

内容概要:本文档围绕六自由度机械臂的ANN人工神经网络设计展开,涵盖正向逆向运动学求解、正向动力学控制,并采用拉格朗日-欧拉法推导逆向动力学方程,所有内容均通过Matlab代码实现。同时结合RRT路径规划B样条优化技术,提升机械臂运动轨迹的合理性平滑性。文中还涉及多种先进算法仿真技术的应用,如状态估计中的UKF、AUKF、EKF等滤波方法,以及PINN、INN、CNN-LSTM等神经网络模型在工程问题中的建模求解,展示了Matlab在机器人控制、智能算法系统仿真中的强大能力。; 适合人群:具备一定Ma六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)tlab编程基础,从事机器人控制、自动化、智能制造、人工智能等相关领域的科研人员及研究生;熟悉运动学、动力学建模或对神经网络在控制系统中应用感兴趣的工程技术人员。; 使用场景及目标:①实现六自由度机械臂的精确运动学动力学建模;②利用人工神经网络解决传统解析方法难以处理的非线性控制问题;③结合路径规划轨迹优化提升机械臂作业效率;④掌握基于Matlab的状态估计、数据融合智能算法仿真方法; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点理解运动学建模神经网络控制的设计流程,关注算法实现细节仿真结果分析,同时参考文中提及的多种优化估计方法拓展研究思路。
内容概要:本文围绕电力系统状态估计中的异常检测分类展开,重点介绍基于Matlab代码实现的相关算法仿真方法。文章详细阐述了在状态估计过程中如何识别和分类量测数据中的异常值,如坏数据、拓扑错误和参数误差等,采用包括残差分析、加权最小二乘法(WLS)、标准化残差检测等多种经典现代检测手段,并结合实际算例验证方法的有效性。同时,文档提及多种状态估计算法如UKF、AUKF、EUKF等在负荷突变等动态场景下的应用,强调异常处理对提升电力系统运行可靠性安全性的重要意义。; 适合人群:具备电力系统基础知识和一定Matlab编程能力的高校研究生、科研人员及从事电力系【状态估计】电力系统状态估计中的异常检测分类(Matlab代码实现)统自动化相关工作的工程技术人员。; 使用场景及目标:①掌握电力系统状态估计中异常数据的产生机制分类方法;②学习并实现主流异常检测算法,提升对状态估计鲁棒性的理解仿真能力;③服务于科研项目、课程设计或实际工程中的数据质量分析环节; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,配合电力系统状态估计的基本理论进行深入理解,重点关注异常检测流程的设计逻辑不同算法的性能对比,宜从简单案例入手逐步过渡到复杂系统仿真。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值