我在两个不同的库中有相同的表名,我想在开始时使用一个条件来选择要使用的库(SAS Enterprise Guide)。是否可以使用库的变量来实现如下所示?
如果(txt = 'tst')
从 TST.TableName 中选择 *
别的
Select * form DEV.TableName
我在两个不同的库中有相同的表名,我想在开始时使用一个条件来选择要使用的库(SAS Enterprise Guide)。是否可以使用库的变量来实现如下所示?
如果(txt = 'tst')
从 TST.TableName 中选择 *
别的
Select * form DEV.TableName
执行此操作的最佳方法因定义而异txt
。如果您根据用户输入选择此选项(在您的示例中,用户选择 TEST 或 DEV(或 PROD)数据库指向),那么 Enterprise Guide 中的最佳方法是创建提示以创建宏变量,或者其次直接创建宏变量。
Ben Cochran 的论文Be Prompt Now: Creating and Using Prompts in SAS Enterprise Guide很好地介绍了该主题以及其他在线资源。您可以设置一个提示,询问用户指向哪个环境,然后它将定义一个具有您选择的值的宏变量。然后将提示添加到您需要与之相关的程序中,然后它就可以工作了。
因此,在您的情况下,您可以让它设置一个&env.
包含表名(TST
或DEV
)值的变量。您也可以让它控制 libname 值本身(因此您无需更改使用的 libname,而是更改 libname 指向的文件夹或数据库)。
如果您不在 EG 中,或者出于某种原因不想使用提示符,您同样可以自己分配该宏变量。
%let env = TST;
无论哪种方式,一旦你&ENV=TST
建立起来,你只需在开放代码中使用它:
proc sql;
select * from &ENV..TableName;
quit;
或者,就像我说的,您可以根据宏变量分配 libname 并在代码中使用单个 libname;这通常更干净,尽管它会留下自己的并发症。