You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAS Viya/CAS中查询zzz123服务器下所有表的名称与大小

如何在SAS Viya/CAS中查询指定服务器下所有表的名称和大小?

你当前使用SAS Viya/CAS环境,已通过以下命令获取到zzz123相关的caslib路径:

proc cas;
table.caslibInfo;
quit;

输出包含路径:

/disk/data/sas/zzz123/home1/...
/disk/data/sas/zzz123/home2/...
/disk/data/sas/zzz123/home3/...

你已能通过以下命令查询单表详情:

proc cas;
table.tableDetails/caslib = "some name" name = "table1";
quit;

但你尝试的宏无法实现批量查询所有表的需求,因为table.tableDetails必须指定具体表名才能返回详情。以下是正确的实现方法:

正确的批量查询宏代码

%macro get_all_table_details(target_caslib);
    /* 1. 获取指定caslib下的所有表名列表,保存到CAS数据集 */
    proc cas;
        table.tableInfo / caslib="&target_caslib" outcaslib="casuser" out="table_list";
    quit;

    /* 2. 将CAS数据集加载到SAS临时库,方便后续遍历 */
    proc casutil;
        load casdata="table_list" caslib="casuser" out=work.table_list replace;
    quit;

    /* 3. 遍历表名列表,逐个调用tableDetails获取每个表的存储信息 */
    data _null_;
        set work.table_list;
        /* 生成动态执行的代码 */
        call execute(cats(
            'proc cas;',
            '    table.tableDetails / caslib="&target_caslib" name="', trim(name), '";',
            'quit;'
        ));
    run;
%mend;

/* 调用宏:替换your_caslib_name为实际caslib名称(如对应/home1的caslib名) */
%get_all_table_details(your_caslib_name);

关键说明

  • 替换your_caslib_name为table.caslibInfo输出中对应的caslib名称(不是文件路径)
  • 如果需要处理多个caslib(如home1、home2、home3对应的caslib),只需多次调用宏即可
  • table.tableDetails返回的结果包含表大小(size字段)、行数、创建时间等存储信息,可根据需求提取保存到数据集

内容的提问来源于stack exchange,提问作者farrow90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:06:14