在SAS中更新库

在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) 您将如何为它编写代码?库概念的一个原因是避免名称冲突。您所要求的

我可能有一个名为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)

您将如何为它编写代码?

库概念的一个原因是避免名称冲突。您所要求的将无法处理此类冲突(即,两个库中的数据集名称相同)。如果您可以确定不会发生冲突,那么实际上就没有理由满足您的要求:记住(和解析)唯一的数据集名称或唯一的数据集名称及其库之间没有根本区别。

只保留可能发生冲突的情况,但您有一个库具有优先级。你可以写一些接近你想要的东西:
使用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;

我运行了一个脚本,该脚本使用一个列时间戳创建临时库,该列时间戳是脚本的实际运行日期。我想将此脚本的结果附加到脚本一段时间内所有执行的总结果中。