SAS:有条件的库选择

时间:2014-10-09 19:24:39

标签: sas enterprise-guide

我在两个不同的库中有相同的表名,我想在开始时使用一个条件来选择要使用的库(SAS Enterprise Guide)。是否可以使用库的变量来实现类似下面的内容?

IF(txt ='tst“)

从TST.TableName

中选择*

ELSE

选择*表单DEV.TableName

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳方式因定义txt的内容而异。如果您根据用户输入选择此选项(在您的示例中,用户选择TEST或DEV(或PROD)数据库指向),那么企业指南中的最佳方法是创建一个创建宏变量的提示,或者其次直接创建一个宏变量。

Ben Cochran的论文Be Prompt Now: Creating and Using Prompts in SAS Enterprise Guide是对该主题的一个很好的介绍,以及其他在线资料。您可以设置一个提示,询问用户指向哪个环境,然后它将定义一个具有您选择的值的宏变量。然后将提示添加到您需要它与之相关的程序中,并且presto,它可以工作。

因此,在您的情况下,您可以设置一个变量&env.,其中包含表名(TSTDEV)的值。您也可以让它控制libname值本身(因此您不会更改使用的libname,而是更改libname指向的文件夹或数据库)。


如果您不在EG中,或者由于某种原因您不想使用此提示,您同样可以自己分配该宏变量。

%let env = TST;

无论哪种方式,一旦你建立&ENV=TST,你只需在开放代码中使用它:

proc sql;
  select * from &ENV..TableName;
quit;

或者,就像我说的那样,您可以根据宏变量分配libname并在代码中使用单个libname;虽然它有其自身的复杂性,但它通常更清洁。