每个 ASO 维都分配了一个层次类型:“存储”、“动态”或“多个”。层次类型为“存储”的维的元素会存储起来,而且聚合在聚合视图中进行实体化。
“动态”维的元素无法聚合到视图中。在“多个”类型的维中,层代 2(顶级节点的子代)设置为“存储”或“动态”。对于“多个”层次类型,可以在层代 2 选择“存储”或“动态”作为层次类型。第一个层代 2 子项(通常是主层次)的类型必须为“存储”。对于此类层次,您应编辑所有层代 2 成员并选择“存储”(首选)或“动态”作为层次类型。
首选存储维以确保获得最佳性能。由于选择的层次类型也会影响可以创建的聚合视图数,因此 Oracle 建议如下:
维转换中层次类型的影响
例如,在将维从“动态”转换为“多个”时,节点成员 (Gen1) 会成为仅标签。如果动态维在层代 2 只有一个子代 (+),则转换将发挥作用。如果需要 Gen1(节点)级别的合计,则从“动态”到“多个”的维转换可能无法完成。设置层次类型
层次类型(“存储”、“动态”或“多个”)针对每个维的顶级节点成员设置。在所有情况下,后代都继承父代的层次类型。因此,“存储”和“动态”层次类型是针对整个维设置的。对于给定“多个”层次类型的维,将每个层代 2 成员(节点成员的子代)设为“动态”或“存储”。
“存储”层次类型的注意事项如下:
“动态”层次类型的注意事项如下:
公式和层次类型的使用
尽管可以在“动态”层次类型中使用公式,但需要注意的是,整个维不需要都是“动态”的;只有公式所在的层次需要是“动态”的。
维包含公式时,尽可能使用“多个”作为层次类型。在层代 2 中,仅将维中包含公式的层次设为“动态”;将剩余层次设为“存储”。
方案维就是一个很好的示例,其中可能包含“实际”、“预算”、“预测”和一些公式。通常,这些都是层代 2 成员。在这种情况下,将方案层次类型设为“多个”,将包含公式的层代 2 成员设为“动态”,将所有其他成员设为“存储”。
共享成员和层次类型
共享成员可以影响 ASO 数据库中有关层次类型的决策。尽管“存储”维不能具有共享成员,但“多个”维类型中的“存储”层次可以具有共享成员。
在“多个”维中设置层次类型时,尽可能多地将层次设为“存储”类型(在层代 2 设置)。
如果共享成员仅共享一次,并且是与 0 级成员共享,则可以存在于“多个”维中的“存储”层次中。但是,对于“存储”层次中的共享成员,可能存在以下限制,要求您将“多个”维中的层代 2 层次设为“动态”:
如果每个共享成员仅使用一次,并且是 0 级成员的共享实例,则可以存在于“多个”维中。