首页 > 解决方案 > 维度的 ProcessUpdate 触发处理多维数据集中所有度量值组的所有分区

问题描述

我在多维数据集中有帐户和客户维度,它们连接到相同的度量值组(多维数据集中大约有 15 - 20 个度量值组)。

当我运行 XMLA 命令来处理更新这两个维度时,如下所示:

<Batch>
    <Parallel>
        <Process>
            <Object>
                <DatabaseID>My Database</DatabaseID>
                <DimensionID>Dim Customer</DimensionID>
            </Object>
            <Type>ProcessUpdate</Type>
            <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
        </Process>
    </Parallel>
</Batch>

对于 Account 维度,它会在几分钟内完成,因为它不会触发对所有度量值组的所有分区的处理。但是在客户维度的情况下,它会触发对所有度量组的所有分区的处理,因此该维度的过程更新持续时间比整个多维数据集的完整处理时间更长。

我不确定在一个维度而不是另一个维度的情况下维度将触发所有这些处理的原因是什么。对于这两个维度,“处理受影响的对象”设置为“不处理”。我应该在哪里看,检查什么,我能以某种方式阻止这种重新处理的发生吗?

谢谢!

标签: ssasmdx

解决方案


ProcessUpdate的文档指出

强制重新读取数据和更新维度属性。将删除相关分区上的灵活聚合和索引。

可能导致聚合被丢弃。

具体来说,有一个关于不同处理选项的MSDN 博客,其中详细说明了何时可以删除聚合

根据维度表中更改的性质,ProcessUpdate 可能会影响依赖分区。如果只添加了新成员,则分区不受影响。但是,如果成员被删除或成员关系发生变化(例如,客户从雷德蒙德搬到西雅图),那么分区上的一些聚合数据和位图索引将被删除。

BI 世界的关键人物之一 Chris Webb 也在博客中谈到了这一点,具体来说,他有以下话要说:

清除索引/聚合的行为也在 Profiler 中显示为“分区处理操作”


推荐阅读