2

我正在尝试重新创建我的 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 聚合,行数是否可能太大?

这是简短的专业 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;

谢谢!

4

2 回答 2

2

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

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

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

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

于 2013-08-02T13:43:24.210 回答
1

Creating an index on the nway is not possible with given preferences. So I added following options in 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;
于 2013-08-05T10:39:17.530 回答