SAS连接到Teradata-使用2个帐户(交换机)

SAS连接到Teradata-使用2个帐户(交换机),sas,teradata,Sas,Teradata,有人能帮忙吗?我已经有几年没有使用SAS了,在连接Teradata时需要一些帮助 如果一天的时间在晚上7点到早上6点59分之间,我想使用ACCT1连接到Teradata;如果一天的时间在早上7点到下午6点59分之间,我想使用Acct2连接到Teradata %let acct1="mismktdev" acct2="mismktprod" %include %macro t_cnnct; options nomprint; connect to t

有人能帮忙吗?我已经有几年没有使用SAS了,在连接Teradata时需要一些帮助

如果一天的时间在晚上7点到早上6点59分之间,我想使用ACCT1连接到Teradata;如果一天的时间在早上7点到下午6点59分之间,我想使用Acct2连接到Teradata

%let
    acct1="mismktdev"
        acct2="mismktprod"


%include
%macro t_cnnct;  
    options nomprint;
    connect to teradata (tdpid="&tpidxyz" user="&misuid"
    password="&mispwd" account="&acct1"  mode=teradata);
    options mprint;

proc sql;
  connect to teradata (user="&terauser" password="&terapwd"  mode=teradata);
  execute (SET QUERY_BAND = 'Application=PrimeTime;Process=Daily;script=pt_add_history_v30.sas;' for session ) by teradata;
  %mend t_cnnct;

proc sql;
    Sel * from tblname;

您可以使用
%let timenow=%sysfunc(time(),time.)
获取程序运行的时间,然后在宏中执行以下操作:

%macro test();
%let timenow=%sysfunc(time(), time.);
%put &timenow;
%if (&timenow > '19:00'T and &timenow < '06:59'T) %then %do;
    /* Your Code for 7pm - 6:59am Here*/
%end; 

%else %do;
    /*Code for 7am - 6:59pm here*/
%end;
%mend;

%test();
%宏测试();
%让timenow=%sysfunc(time(),time.);
%现在就放&timenow;
%如果(&timenow>'19:00'T和&timenow<'06:59'T)%;
/*您的密码是晚上7点到早上6点59分*/
%结束;
%否则%会;
/*这里的代码是早上7点到下午6点59分*/
%结束;
%修补;
%test();

您使用SAS宏变量的想法非常正确。下面是一个宏,用于定义所需的所有全局SAS宏变量(包括更改“帐户”字符串):

请注意,您使用的
tdpid=
选项是
server=
选项的别名(我更喜欢它)。此外,您设置的查询范围将在整个
PROC SQL
运行期间保持有效

下面是使用相同宏变量的SAS libref示例:

libname myTD teradata user="&terauser" password="&terapwd" account="&teraacct" 
                      server="&tdserver" database="&teradb" mode=teradata);
%t_cnnct;

proc sql;
  connect to teradata (user="&terauser" password="&terapwd" account="&teraacct" 
                       server="&tdserver" mode=teradata);
  execute (
     SET QUERY_BAND = 'Application=PrimeTime;Process=Daily;script=pt_add_history_v30.sas;' for session
     ) by teradata;

  create table mySASds as
  select *
  from connection to teradata (
     select *
     from &teradb..tablename
     );
quit;
libname myTD teradata user="&terauser" password="&terapwd" account="&teraacct" 
                      server="&tdserver" database="&teradb" mode=teradata);