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

How to create a MACRO variable in SAS library with options symbolgen

我对 SAS 和雪花真的很陌生。如果您认为有合适的方式来描述我的问题,请更正我的问题。

我需要使用以下设置构建 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."; 

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

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

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

我的目标是将 table 创建为:

create table XXX.&SYSUSERID.&PROJ.yyy

&SUSUSERID 应该能够自动将不同的用户名填充到 table 名称中。

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

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