我可以在SAS中设置数据集之间的关系吗?
我正从关系数据库转向SAS。现在我需要将几个CSV文件导入SAS,这些文件之间存在关系。就像数据库中表之间的关系一样。我想知道,SAS中是否存在相同的概念,例如我需要设置的外键,或者我是否应该直接导入这些文件,而不管它们之间的关系如何,因为SAS中没有这样的东西?既然外键的概念存在于您的头脑中,它也存在于SAS中。但(通常)它不是您实际用于标记数据字段的“受支持的属性”。SAS的开销很低,因为它需要进行大量的前期数据定义,特别是对于临时工作 只需按原样导入文件即可我可以在SAS中设置数据集之间的关系吗?,sas,Sas,我正从关系数据库转向SAS。现在我需要将几个CSV文件导入SAS,这些文件之间存在关系。就像数据库中表之间的关系一样。我想知道,SAS中是否存在相同的概念,例如我需要设置的外键,或者我是否应该直接导入这些文件,而不管它们之间的关系如何,因为SAS中没有这样的东西?既然外键的概念存在于您的头脑中,它也存在于SAS中。但(通常)它不是您实际用于标记数据字段的“受支持的属性”。SAS的开销很低,因为它需要进行大量的前期数据定义,特别是对于临时工作 只需按原样导入文件即可 对于关系数据库,您可能应该将“
对于关系数据库,您可能应该将“procsql”视为在SAS中使用数据操作技能的最快、最好的方法 在SAS中,您有的概念,如评论中提到的mjsqu。这就是如何加强数据集之间的关系。它的使用非常简单,并且对于具有强大SQL背景的人来说,语法应该相对熟悉 完整性约束包括:
- 检查(写入数据集的有效值列表)
- Not Null(可能没有缺少的值)
- 唯一(可能没有重复的值)
- 主键
- 外键(也称为“引用约束”,因为它是唯一检查另一个表的约束)
proc sql;
create table employees (
employee_id num primary key,
name char(16),
gender char(1),
dob num format=date9.,
division num not null);
create table division_table (
division num primary key,
division_name char(16)
);
alter table employees
add constraint gender check(gender in ('M','F'))
add constraint division foreign key(division) references division_table
on delete restrict on update restrict;
*this insert fails because of Division not containing a value for 1;
insert into employees (employee_id,name,gender,dob,division) values (1,'Johnny','M','06JAN1945'd,1);
insert into division_table (division,division_name) values (1,'Division 1');
*Now it succeeds;
insert into employees (employee_id,name,gender,dob,division) values (1,'Johnny','M','06JAN1945'd,1);
quit;
您还可以在
PROC DATASETS
中添加约束,这对于SAS用户来说更为熟悉(对于不熟悉SQL的用户来说,语法可能会稍微简单一些)。SAS有一个称为完整性约束的等效概念。您的意思是,引用完整性在SAS中不是很重要吗?不,他说SAS不像其他RDBMS中那样具有严格的模式,但您可以在查询中设置关系,并为每个文件(特别是主密钥和外键)设置完整性约束SAS与许多其他产品一样,多年来添加了无数的Whists和Bell,内置的引用完整性约束是最近出现的特性之一。从历史上看,OLTP类型的应用程序需要引用完整性约束,而不是分析用途,因为分析用途通常不是数据的主要(原始)存储位置。使用SAS构建OLTP可能不是使用最好的工具。