Excel DAX - 公式重新计算故障排除

每当工作簿的数据模型发生变化时,Power Pivot 都会对现有数据进行分析以确定是否需要重新计算并以尽可能最有效的方式执行更新。

Power Pivot 在重新计算 DAX 公式期间处理以下内容 −

  • 依赖
  • 相关列的重新计算顺序
  • 事务
  • 易变函数的重新计算

依赖

当一列依赖于另一列,并且另一列的内容发生任何变化时,可能需要重新计算所有相关列。

Power Pivot 始终对表执行完整的重新计算,因为完整的重新计算比检查更改的值更有效。 触发重新计算的更改可能包括删除列、更改列的数字数据类型或添加新列。 这些更改被视为重大更改。 但是,看似微不足道的更改(例如更改列名)也可能会触发重新计算。 这是因为列的名称用作 DAX 公式中的标识符。

在某些情况下,Power Pivot 可能会确定可以将列排除在重新计算之外。


相关列的重新计算顺序

相关性是在任何重新计算之前计算的。 如果有多列相互依赖,Power Pivot 会遵循依赖顺序。 这可确保以最大速度以正确的顺序处理列。


事务

重新计算或刷新数据的操作作为事务发生。 这意味着如果刷新操作的任何部分失败,其余操作将回滚。 这是为了确保数据不会处于部分处理状态。 但是,您不能像在关系数据库中那样管理事务或创建检查点。


易变函数的重新计算

DAX 函数,如 NOW、RAND 或 TODAY 没有固定值,被称为易变函数。 如果在计算列中使用此类 DAX 函数,则查询或过滤的执行通常不会导致重新计算它们以避免性能问题。

只有在重新计算整个列时,才会重新计算这些 DAX 函数的结果。 这些情况包括从外部数据源刷新或手动编辑数据导致重新评估包含这些函数的 DAX 公式。

但是,如果在计算字段的定义中使用这些函数,则这些函数将始终被重新计算。