在SAS中更新库
我可能有一个名为qa.my_library的库,也可能没有 我在工作中有一个临时库(相同的列,不同的数据)。我的临时库 我的目标是实现这个伪代码在SAS中更新库,sas,union,Sas,Union,我可能有一个名为qa.my_library的库,也可能没有 我在工作中有一个临时库(相同的列,不同的数据)。我的临时库 我的目标是实现这个伪代码 if qa.my_library doesn't exists then qa.my_library = work.my_library_temp; else qa.my_library = SQL UNION (qa.my_library, work.my_library_temp) 您将如何为它编写代码?库概念的一个原因是避免名称冲突。您所要求的
if qa.my_library doesn't exists
then qa.my_library = work.my_library_temp;
else qa.my_library = SQL UNION (qa.my_library, work.my_library_temp)
您将如何为它编写代码?库概念的一个原因是避免名称冲突。您所要求的将无法处理此类冲突(即,两个库中的数据集名称相同)。如果您可以确定不会发生冲突,那么实际上就没有理由满足您的要求:记住(和解析)唯一的数据集名称或唯一的数据集名称及其库之间没有根本区别。
只保留可能发生冲突的情况,但您有一个库具有优先级。你可以写一些接近你想要的东西:
使用SASHELP库,标识库A和B中的每个数据集。假设A具有优先级:对于B中不在A中的每个数据集,运行以下操作:
data A.dataset_from_B /view=A.dataset_from_B;
set B.dataset_from_B;
run;
同样,它也不完全相同,但可能满足您的需求。但是我很想知道您为什么需要这个函数。要确定库是否存在,请使用该函数。要确定数据集是否存在,请使用函数 以下是一些示例代码:
%Global LIBEXISTS DSNEXISTS;
Options source source2 notes symbolgen mlogic mprint ;
%Macro Check(Lib=,DSN=);
%Let LIBEXISTS=0;
/* Outside the DATA STEP, use %SYSFUNC */
%IF %SYSFUNC(LIBREF(&LIB)) = 0 %THEN %Let LIBEXISTS=1; ;
%Let DSNEXISTS=0;
%IF %SYSFUNC(EXIST(&DSN)) > 0 %THEN %Let DSNEXISTS=1; ;
%Mend;
libname test 'c:\';
Data Test.Temp;
Test="Test";
Run;
%Check(Lib=test,dsn=test.temp) ;
%Put LIB EXISTS? &libexists;
%Put DSN EXISTS? &dsnexists;
libname test clear;
%Check(Lib=test,dsn=test.temp) ;
%Put LIB EXISTS? &libexists;
%Put DSN EXISTS? &dsnexists;
我运行了一个脚本,该脚本使用一个列时间戳创建临时库,该列时间戳是脚本的实际运行日期。我想将此脚本的结果附加到脚本一段时间内所有执行的总结果中。