如何在SAS库中使用选项symbolgen创建MACRO变量



我对SAS和snowflake真的很陌生。如果你认为有合适的方式来描述我的问题,请纠正我的问题。

我需要建立一个SAS模块与以下设置

options symbolgen;
%let SNOW = 
"DRIVER = {SnowflakeDSIIDriver};
authenticator = https://xxx;
UID = &user.;
PWD = &pwd;
ROLE = ROLE_&sysuserid;
WAREHOUSE= AAA_BBB_CCC_WH;
DATABASE = XXX;
libname SF odbc complete = &SNOW."; 

我面临的问题是如何创建一个表,不同的用户具有不同的角色可以创建不同的表名而不改变代码。

现在我必须为我创建的每个表输入我的名字:

Create or replace table AA_BB.CC_Jeff as  /* my name is Jeff*/
(select ...) 

我的目标是创建如下表:

create table XXX.&SYSUSERID.&PROJ.yyy

&SUSUSERID应该能够自动为表名填充不同的用户名。

首先创建一个有效的语句。如果目标是生成如下语句:

libname SF odbc complete = 
"DRIVER = {SnowflakeDSIIDriver};
authenticator = https://xxx;
UID = SF_USER;
PWD = SF_PASS;
ROLE = ROLE_SASUSER;
WAREHOUSE= AAA_BBB_CCC_WH;
DATABASE = XXX;
"
; 

然后创建包含更改部分的宏变量,并用对宏变量的引用替换示例硬编码值。所以如果有三个变量,你就需要三个宏变量。

%let db_user=SF_USER;
%let db_pass=SF_PASS;
%let sas_user=&sysuserid;
libname SF odbc complete = 
"DRIVER = {SnowflakeDSIIDriver};
authenticator = https://xxx;
UID = &db_user.;
PWD = &db_pass.;
ROLE = ROLE_&sas_user.;
WAREHOUSE= AAA_BBB_CCC_WH;
DATABASE = XXX;
"
;

最新更新