SAS:图书馆的条件选择

SAS:图书馆的条件选择,sas,enterprise-guide,Sas,Enterprise Guide,我在两个不同的库中有相同的表名,我想在开始时使用一个条件来选择要使用的库(SAS Enterprise Guide)。是否可以为库使用变量来实现以下功能 如果(txt=‘tst’) 从TST.TableName中选择* 否则 选择*form DEV.TableName执行此操作的最佳方式取决于txt的定义。如果您是根据用户输入选择此选项(在您的示例中,用户选择指向的测试或开发(或产品)数据库),则《企业指南》中的最佳方法是创建创建宏变量的提示,或者直接创建宏变量 Ben Cochran的论文很好

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

如果(txt=‘tst’)

从TST.TableName中选择*

否则


选择*form DEV.TableName

执行此操作的最佳方式取决于
txt
的定义。如果您是根据用户输入选择此选项(在您的示例中,用户选择指向的测试或开发(或产品)数据库),则《企业指南》中的最佳方法是创建创建宏变量的提示,或者直接创建宏变量

Ben Cochran的论文很好地介绍了这一主题以及其他在线资源。您可以设置一个提示,询问用户指向哪个环境,然后它将定义一个宏变量,其中包含您选择的值。然后将该提示添加到您需要与之相关的程序中,并且可以正常工作

因此,在您的例子中,您可以让它设置一个变量
&env.
,该变量包含表名的值(
TST
DEV
)。您还可以让它控制libname值本身(这样您就不会更改使用哪个libname,而是更改libname指向哪个文件夹或数据库)


如果您不在EG中,或者出于任何原因不想使用提示,您同样可以自己指定该宏变量

%let env = TST;

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

proc sql;
  select * from &ENV..TableName;
quit;
或者,如我所说,您可以基于宏变量分配libname,并在代码中使用单个libname;这通常更简洁,尽管它会留下自己的复杂性