我对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;
"
;