SAS-创建嵌套在工作中的新库

SAS-创建嵌套在工作中的新库,sas,Sas,tl;dr:SAS库能否在增强型编辑器资源管理器中相互嵌套? 我正在使用生成大量数据集的代码。虽然有许多单独的数据集,但它们可以分为不同的类别。例如,其中30个是输入的“原始”数据,另外50个是分析“结果”,其余20个是“中间”步骤 目前,所有100个数据集都位于Work目录中。它们的名称很好,因此在SAS资源管理器窗口中彼此相邻。但是,我更愿意将它们组织在文件夹中 一种方法是在临时Work文件夹中创建新目录 %let dirWORK = %sysfunc(pathname(Work)); o

tl;dr:SAS库能否在增强型编辑器资源管理器中相互嵌套?

我正在使用生成大量数据集的代码。虽然有许多单独的数据集,但它们可以分为不同的类别。例如,其中30个是输入的“原始”数据,另外50个是分析“结果”,其余20个是“中间”步骤

目前,所有100个数据集都位于
Work
目录中。它们的名称很好,因此在SAS资源管理器窗口中彼此相邻。但是,我更愿意将它们组织在文件夹中

一种方法是在临时
Work
文件夹中创建新目录

%let dirWORK = %sysfunc(pathname(Work));

options dlcreatedir;

libname raw     "&dirWORK./raw";
libname interm  "&dirWORK./intermediate";
libname results "&dirWORK./results";
作为
工作
的子目录,这些目录及其内容将在会话结束时删除。这是令人愉快的

不令人满意的是
raw
iterm
results
库如何在“活动库”中而不是在“工作内容”中向上显示一级。这种行为有点违反直觉和尴尬

  • 是否有办法查看“目录”中的
    Work
    子文件夹 SAS Explorer中“工作”的名称
  • 也许有另一种方法可以分离数据集(
    DCREATE
    ?),从而使资源管理器窗口的行为类似于典型的文件浏览器

SAS libref只是一个单词,因此根据定义,没有继承权。您可以尝试使用librefs,将它们按字母顺序排列在一起?也许是工作,工作中,锻炼。然后他们会按逻辑顺序排序

您可以使用文件资源管理器浏览已创建的目录结构,但我认为SAS显示管理器中的SAS资源管理器工具无法处理此问题

DMS确实有一个文件资源管理器工具,你可以试试。通过从任何窗口的命令行或通过程序中的DM语句运行此命令,可以直接在当前工作目录上启动

exproot dir="%sysfunc(pathname(work))" title="Work Directory"

图书馆可以包含很多东西。。但不是其他图书馆。您的“活动库”将始终在同一级别显示您的(可用)库列表,无论它们在何处或如何定义:

如果希望像典型的文件浏览器一样查看数据集,可以选择使用资源管理器窗口。只需单击“视图/资源管理器”,并以这种方式导航到您的数据集

例如:


似乎没有理想的解决方案。我所能设计的最佳方案需要使用两个部分名称、大量额外代码和自定义设置,这可能会让其他程序员感到困惑。最简单的配置似乎是默认行为:简单地转储
工作
库中的所有数据集并筛选所有数据集

为了繁荣,这是我能想出的组织事情的最好办法

  • 了解显示管理器和资源管理器窗口
  • 显示管理器(DM)控制增强编辑器中的各个窗口。这包括
    日志
    结果
    pgm
    输出
    浏览器
    等窗口。这里主要关心的是后者

    用户可以使用菜单配置每个会话的窗口。但是,存在一个可用于为每个会话自动配置DM的。当与
    AUTOEXEC.sas
    一起使用时,这允许用户“永久”地根据自己的喜好配置sas编辑器

    增强编辑器的默认
    explorer
    视图为“SAS环境”的内容

    当选择
    资源管理器
    窗口时,可以切换树层次视图。有几种方法可以做到这一点。这里有一个方法:

  • 选择
    explorer
    窗口
  • 视图>显示树
  • 每次打开SAS时都必须这样做会让人感到痛苦。清理库树后,我们将自动执行此操作

  • 删除任何无关的库
  • SAS按加载各种库。这些产品包括
    工作
    SASHELP
    SASUSER
    ,以及属于非基础产品的其他产品。在我的例子中,
    MAPS
    MAPSGFK
    mapsas
    库也被加载(参见上图)。由于我从未使用过这些(而且可能永远也不会),它们只会把我的库目录弄得乱七八糟。要删除这些,可以编辑它们的配置文件

    SAS实现了一个完整的web服务。在Windows系统上,可能相关的
    sasv9.cfg
    文件位于此处:

    C:\Program Files\SASHome\SASFoundation\9.4
    
    C:\ProgramFiles\saHome\SASFoundation\9.4\nls\en

    您需要管理员权限才能编辑它。忽略此行下方的
    请勿编辑
    警告,使用PL/I样式注释掉以下内容

    联合国评论:

    -MAPS !SASROOT\maps
    -MAPSGFK !SASROOT\mapsgfk
    -MAPSSAS !SASROOT\maps
    
    评论:

    /*    -MAPS !SASROOT\maps*/
    /*    -MAPSGFK !SASROOT\mapsgfk*/
    /*    -MAPSSAS !SASROOT\maps*/
    
    现在,当SAS打开时,
    MAPS
    MAPSGFK
    mapsas
    库将不会自动加载。不幸的是,似乎没有办法禁用加载
    SASUSER
    SASHELP
    库。如果有人知道怎么做,请告诉我

  • 配置资源管理器窗口
  • explorer
    窗口可以使用和
    AUTOEXEC.sas
    进行“配置”

    导航到包含
    SAS.EXE
    的目录。在默认Windows安装中,它位于以下位置:

    C:\Program Files\SASHome\SASFoundation\9.4
    
    创建一个名为
    AUTOEXEC.SAS
    的SAS程序,其中包含以下代码,并将其放置在包含
    SAS.EXE
    的目录中。此步骤需要管理员权限。我发现在非特权环境中创建文件最简单,只需将
    AUTOEXEC.sas
    程序复制到目录中即可

    包括
    dm 'dmsexp; tree; expand libraries; expand work;';
    
    /*Determine location of Work directory*/
    %let dirWORK = %sysfunc(pathname(Work));
    
    /*Allow LIBNAME statement to create new directories*/
    options dlcreatedir;
    
    /*Create sub-folders within the temporary Work directory
      and assign librefs*/
    libname raw     "&dirWORK./raw";
    libname interm  "&dirWORK./intermediate";
    libname results "&dirWORK./results";