SAS - 错误:无法为 NWAY 聚合创建索引。

Posted

技术标签:

【中文标题】SAS - 错误:无法为 NWAY 聚合创建索引。【英文标题】:SAS - ERROR: Indexes cannot be created for the NWAY aggregation. 【发布时间】:2013-08-02 08:09:20 【问题描述】:

我正在尝试重新创建我的 OLAP 多维数据集。多维数据集已经存在。然后我删除物理多维数据集

DELETE_PHYSICAL

在这之后

PROC OLAP

跟随。 我的作业批量失败并显示错误消息

NOTE: The cube registration was found.
ERROR: Indexes cannot be created for the NWAY aggregation.
NOTE: Number of NWAY records: 32899296

有人能告诉我为什么它失败了吗?我的其他测试运行良好,但那里的多维数据集/详细信息表仅包含 12,000,000 行。对于 NWAY 聚合,行数是否可能太大?

这里是简短的 pro olap 代码:

PROC OLAP
   CUBE                   = "/XXX"
   DELETE_PHYSICAL;


   METASVR
     HOST        = "XXX"
     PORT        = xxx
     USERID      = "XXX"
     PW          = "XXX"
     olap_schema="XXX";

RUN;

PROC OLAP
   CUBE                   = "/XXX";


   METASVR
     HOST        = "XXX"
     PORT        = xxx
     USERID      = "XXX"
     PW          = "XXX"
     olap_schema="XXX";

RUN;

谢谢!

【问题讨论】:

您似乎怀疑它是由于大小,所以也许您可以尝试以下 2 件事:(1)减小此表的大小并再次尝试查看是否通过。 (2) 启用一些额外的选项来跟踪性能:PROC OPTIONS GROUP=(SORT MEMORY PERFORMANCE);运行; @Shorack:在处理 proc olap 之前使用您的代码示例启用选项。但是,我与 memsize 等有什么关系?它在执行 proc olap 时没有显示利用率......所以我不能说它是否因内存太少而失败。 【参考方案1】:

在我看来,您有太多唯一值(不一定是太多行,而是太多唯一组合),以至于无法在分配的空间中正确创建索引。

查看this paper 以获得一些建议。特别是,看看 ASYNCINDEXLIMIT 和 INDEXSORTSIZE - 看看你是否可以增加这些以允许它构建。找出你有多接近的一个好方法是用你的完整数据集的一个子集运行 PROC OLAP,特别是你感兴趣的变量的唯一值的一个子集,看看你是否可以做(比如说)您当前限制内的一半或四分之一的数据。

如果您能够创建 12MM 行但不能创建 32MM 行,那么您至少可以尝试将大小限制加倍,看看是否可行。 SAS 的默认尺寸往往过于保守。

您也可以尝试打开OPTION MSGLEVEL=I,因为这应该会为您提供一些关于它尝试创建的索引大小的额外信息。

【讨论】:

【参考方案2】:

在给定偏好的情况下,无法在 nway 上创建索引。所以我在 proc olap (NOINDEX NO_NWAY) 中添加了以下选项:

PROC OLAP
   CUBE                   = "/xxx"
   DATA                   = xxx.xxx
   DRILLTHROUGH_TABLE     = xxx.xxx
   PATH                   = '/xxx'
   DESCRIPTION            = 'xxx'
   NOINDEX
   NO_NWAY;

   METASVR
    HOST        = "xxx"
    PORT        = xxx
    USERID      = "xxx"
    PW          = "xxx"
    olap_schema="xxx";
RUN;

【讨论】:

以上是关于SAS - 错误:无法为 NWAY 聚合创建索引。的主要内容,如果未能解决你的问题,请参考以下文章

Azure 存储 SAS 无法进行身份验证

错误:无法创建符号链接,致命:无法将索引文件重置为修订版“HEAD”

为使用 Qgis 中的聚合函数连接的每个值创建索引

SAS 聚合仅显示当年的结果

Spring Boot Elasticsearch7.6.2实现创建索引删除索引判断索引是否存在获取/添加/删除/更新索引别名单条/批量插入单条/批量更新删除数据递归统计ES聚合的数据

从 Netezza 数据库创建 SAS 数据集时,SAS“CLI 游标扩展提取错误:数值超出范围”