SAS无效的数据集名称

时间:2018-10-17 20:11:42

标签: unix sas

我们正在使用SAS V 9.04.01M4P110916

我正在从已定义的库中访问数据:

%let us_mkt = server='sandntz.bkrgc.net' database='IDP_PRD_US_MARKETING' port=5480 user=&db2_idx. password=&win_pwdx.

libname ROLAP netezza &us_mkt. schema=USER_ROLAP

data ROLAP.USER_ROLAP.SALES_TBL;
 set ROLAP.SALES_TBL;
run;

我收到以下错误消息:

263        data ROLAP.USER_ROLAP.SALES_TBL;
                ______________________________
                211
ERROR 211-185: Invalid data set name.

264           set ROLAP.SALES_TBL;
265        /*   set USER_ROLAP.SALES_TBL; */
266        run;

如果ROLAP是正确定义的库,而USER_ROLAP是正确定义的架构。为什么会出现此错误?仅供参考:这些名称的任何其他组合都会导致程序无法读取数据的错误。我知道ROLAP.USER_ROLAP是多余的,但是如果我只是在数据语句中说ROLAP.SALES_TBL:我得到以下错误。这是文档说我应该定义它的方式。

263        data ROLAP.SALES_TBL;
264           set USER_ROLAP.SALES_TBL;
ERROR: Libref 'USER_ROLAP' exceeds 8 characters.
ERROR: File WORK.SALES_TBL.DATA does not exist.
265        /*   set USER_ROLAP.SALES_TBL; */
266        run;

为什么会出现这些错误?

1 个答案:

答案 0 :(得分:3)

SAS libname限制为8个字符,并且架构名称(在这种情况下为USER_ROLAP)不是SAS libname的一部分。

 libname ROLAP netezza &us_mkt. schema=USER_ROLAP;
以下所有内容的

指针是ROLAP或您需要在8个字符以内定义的任何内容,其中Netezza是引擎名称以及libname中与netezza的服务器数据库名称和架构名称相关的其他名称。 SAS无法单独理解架构名称

 netezza &us_mkt. schema=USER_ROLAP

您的表名将是

  Rolap.tablename

Edit1:您似乎想将数据移至SAS,然后使用如下所示的bulkunload = YES选项。这样可以将数据从Netezza迅速转移到SAS

   data work.SALES_TBL;
   SET ROLAP.SALES_TBL (bulkunload=YES); 
   RUN;