上传/下载时SAS多层格式无法正常工作

时间:2012-04-23 16:38:18

标签: formatting sas

我正在使用PC SAS 9.1并正在使用两台远程服务器,因此,我正在尝试设置我的参数和格式等;在将它们上传到每个远程服务器之前在本地。

我想将多层格式应用于proc摘要。我的格式部分有效,但上传(或下载)格式时出现问题。

在下面的这个例子中,我正在远程会话上创建MultiLabel格式。然后,我创建一个简单的数据集并应用格式。

然后我对数据执行一个Proc Summary,它将生成一个表格,其中表格品牌字段首先由模型格式化,然后制作,然后输入,产生一个8行的表格。

然后我将格式下载到本地会话并执行相同的数据集创建和摘要。运行此操作时,在Proc Summary中仅使用格式的第一个标签(Model),这意味着我的数据集Summary仅有5行。

    RSubmit RemoteServer;
     Proc Format;
      Value $Brand (NotSorted MultiLabel)
       /* Model */
       'A' = 'Focus'
       'B' = 'Astra'
       'C' = 'Fiesta'
       'D' = 'Corsa'
       'E' = 'Fusion'

       /* Make */
       'A' = 'Ford'
       'B' = 'Vauxhall'
       'C' = 'Ford'
       'D' = 'Vauxhall'
       'E' = 'Ford'

       /* Type */
       'A' = 'Automobile'
       'B' = 'Automobile'
       'C' = 'Automobile'
       'D' = 'Automobile'
       'E' = 'Automobile';
     Run;
    EndRSubmit;

    RSubmit RemoteServer;
     Proc Download InCat  = Work.Formats
                   OutCat = Work.Formats;
     Run;
    EndRSubmit;

    RSubmit RemoteServer;
     Data Source;
      Do i = 1 To 5;
       If      i = 1 Then Brand = 'A';
       Else If i = 2 Then Brand = 'B';
       Else If i = 3 Then Brand = 'C';
       Else If i = 4 Then Brand = 'D';
       Else If i = 5 Then Brand = 'E';
       Volume = 1;
       Output;
      End;
      Format Brand $Brand.;
     Run;
    EndRSubmit;

    RSubmit RemoteServer;
     Proc Summary Data = Source NoPrint CompleteTypes Missing NWay;
      Class Brand / MLF PreLoadFmt Order = Data;
      Var   Volume;
      Output Out = Summary (Drop = _:)
             N() = Volume;
     Run;
    EndRSubmit;



    Data Source;
     Do i = 1 To 5;
      If      i = 1 Then Brand = 'A';
      Else If i = 2 Then Brand = 'B';
      Else If i = 3 Then Brand = 'C';
      Else If i = 4 Then Brand = 'D';
      Else If i = 5 Then Brand = 'E';
      Volume = 1;
      Output;
     End;
     Format Brand $Brand.;
    Run;

    Proc Summary Data = Source NoPrint CompleteTypes Missing NWay;
     Class Brand / MLF PreLoadFmt Order = Data;
     Var   Volume;
     Output Out = Summary (Drop = _:)
            N() = Volume;
    Run;

当我查看每个服务器上的格式时,它显示为使用多个标签正确创建,但它不会应用它们。

我试过各种网站,SUGI等;但找不到其他遇到此问题的人。

读取传输的格式感觉好像出了问题,因为它看起来是正确创建的,当在任何服务器上创建格式时,该表将在该服务器上运行。

我基本上是在发帖,看看之前是否有人遇到过这个问题,如果他们知道为什么会发生这种情况,或者更好的是,如果有什么可以做的,以确保该过程能够正常工作

非常感谢。

1 个答案:

答案 0 :(得分:1)

我认为问题是在创建格式后(在REMOTESERVER1上),然后在连接到REMOTESERVER2之前断开连接回LOCAL会话。需要将FORMAT移动到LOCAL会话,然后移动到REMOTESERVER2。

这对我有用(只需在REMOTESERVER1,LOCAL和REMOTESERVER2之间移动格式目录),至少日志表明它是成功的。

filename RLink 'myScript' ;
options comamid=tcp remote=REMOTESERVER1;
signon REMOTESERVER1 ;
rsubmit;

 proc format;
  value $test
  'TEST'=1 ;
 run;

 Proc Download 
  InCat  = Work.Formats
  OutCat = Work.Formats;
 Run;

endrsubmit ;

/* Now back in LOCAL */

filename RLink 'myScript2' ;
options comamid = tcp remote = REMOTESERVER2 ; 
signon REMOTESERVER2 ;
rsubmit ;

 Proc Upload 
  InCat  = Work.Formats
  OutCat = Work.Formats;
 Run;

endrsubmit ;