【问题标题】:ProcessUpdate of the dimension triggers processing of all partitions of all measure groups in the cube维度的 ProcessUpdate 触发处理多维数据集中所有度量值组的所有分区
【发布时间】:2019-09-24 08:44:50
【问题描述】:

我在多维数据集中有帐户和客户维度,它们连接到相同的度量组(多维数据集中大约有 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 维度,它会在几分钟内完成,因为它不会触发对所有度量值组的所有分区的处理。 但是在客户维度的情况下,它会触发对所有度量组的所有分区的处理,因此该维度的过程更新持续时间比整个多维数据集的完整处理时间更长。

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

谢谢!

【问题讨论】:

    标签: ssas mdx


    【解决方案1】:

    ProcessUpdate 的文档指出

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

    可以导致聚合被丢弃。

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

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

    商业智能领域的关键人物之一克里斯·韦伯 (Chris Webb) 对此也有blogged,具体来说,他有以下话要说:

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

    【讨论】:

    • 感谢您的回答!首先让我感到困惑的是,在运行进程更新之前,我确实处理了整个多维数据集。所以据我了解,SSAS 不应该检测到维度或分区的任何变化,也不应该删除任何聚合或索引?但不知何故,它做到了。
    • 我在属性关系中发现了问题 - 连接到 CustomerKey 属性的客户维度的所有属性,只有一个属性 - 城市仅与邮政编码属性有关系,当我删除此属性时关系并在 CustomerKey 和 City 属性之间创建新的关系,进程更新停止以触发分区处理。但目前我不明白为什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2022-06-10
    • 2013-10-28
    相关资源
    最近更新 更多