我正从关系数据库和新的SAS转移到SAS。现在我需要将几个CSV文件导入SAS,这些文件之间存在关系。就像数据库中表之间的关系一样。我想知道,SAS中是否存在相同的概念,例如我需要设置的外键,或者我是否应该直接导入这些文件而不管关系,因为SAS中没有这样的东西?
答案 0 :(得分:1)
由于您的脑中存在外键的概念,因此它也存在于SAS中。但它(通常)不是"支持的属性"您实际上用于标记数据字段。就必须进行大量前期数据定义而言,SAS的开销很低,尤其是对于临时工作。
只需按原样导入文件。
来自关系数据库,你应该看看" proc SQL"作为最快的&在SAS中使用数据操作技能的最佳方式。
答案 1 :(得分:1)
在SAS中,你有Integrity Constraint的概念,正如评论中提到的mjsqu。这是你如何强制数据集之间的关系。它使用起来非常简单,对于来自强大SQL背景的人来说,语法应该比较熟悉。
完整性限制包括:
以下是SAS的一些完整性约束的实例:
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的人来说,语法可能稍微容易一些)。