【问题标题】:SAS xlsx libname engine on Viya 4Viya 4 上的 SAS xlsx libname 引擎
【发布时间】:2022-10-14 23:59:30
【问题描述】:

我正在尝试从 SAS Studio 会话访问存储在 SAS Drive 上的 xlsx 文件,所有这些都在 Viya 4 上。

这段 SAS 文档表明它可以像在 SAS 9.4 中一样在 Viya 上工作:https://go.documentation.sas.com/doc/en/pgmsascdc/v_031/acpcref/titlepage.htm

但是它没有涉及任何细节或示例,当我尝试此代码时,它成功运行,但生成的库是空的(实际上将路径更改为不存在的文件不会改变任何东西,所以我怀疑文件访问首先工作):

libname myxls xlsx "/folders/myfolder/file.xlsx";

proc contents data=myxls._all_;
run;

【问题讨论】:

  • 我认为要访问“驱动器”,您需要使用特殊的文件名设置。我认为您不能将引用驱动器对象的选项与引用 XLSX libref 引擎的选项结合起来。所以你可能需要两个步骤。一种将“驱动器”复制到/从“驱动器”复制到实际磁盘文件(可能在 WORK 目录中),并在实际磁盘上读取/创建 XLSX 文件的单独步骤。

标签: sas xlsx


【解决方案1】:

如果路径不正确,您将获得空库。或者,如果您的系统不理解您的路径。请记住,您必须将文件夹放在服务器上,而不是放在您的个人光盘上。

libname myxls  "pathmyfolderile.xlsx";

proc contents data=myxls._all_;
run;

这对我来说很好。也许您的系统在使用 / 而不是(我的设置当然不适用于 / )时遇到问题。或者路径不正确。除非我们获得有关您的设置的更多详细信息,否则无法确定。

【讨论】:

  • 我在 Azure 上使用 Viya 4。没有涉及本地(如在我的物理机器上)组件。这只是关于如何使用 XLSX 引擎从 SAS Studio 访问存储在 SAS Drive 上的 xlsx 文件。
【解决方案2】:

您需要使用filesrvc 访问方法来访问 SAS Drive 上的文件。

filename myfile filesrvc
    folderpath = '/folders/myfolder/'
    filename   = 'file.xlsx'
;

您无法直接访问存储在 SAS Drive 上的文件,但您可以使用 proc import 将它们导入 SAS:

proc import 
    file = myfile 
    dbms = 'xlsx' 
    out  = myxls
    replace;
run;

如果您有持久存储,那么只要该文件位于该存储位置,您当然可以使用标准的 libname 访问。

如果您不这样做并且您希望仍然具有 libname 访问权限,一种解决方法是将 xlsx 文件物理复制到您的 WORK 目录,然后分配一个新的 libname 语句:

filename source filesrvc
    folderpath = '/folders/myfolder/'
    filename   = 'file.xlsx'
;

filename dest "%sysfunc(pathname(work))/file.xlsx";

/* Use fcopy to copy from SAS Drive to WORK */
%let rc = %sysfunc(fcopy(source, dest));

libname myxls xlsx "%sysfunc(pathname(work))/file.xlsx";

有关文件服务的更多信息: https://go.documentation.sas.com/doc/en/pgmsascdc/v_031/lestmtsglobal/p0qapul7pyz9hmn0zfoefj0c278a.htm

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2013-08-23
    • 2019-12-09
    相关资源
    最近更新 更多