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 聚合创建索引。的主要内容,如果未能解决你的问题,请参考以下文章
错误:无法创建符号链接,致命:无法将索引文件重置为修订版“HEAD”
Spring Boot Elasticsearch7.6.2实现创建索引删除索引判断索引是否存在获取/添加/删除/更新索引别名单条/批量插入单条/批量更新删除数据递归统计ES聚合的数据