Excel Dax 简明教程

Troubleshooting DAX Formula Recalculation

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

Power Pivot 在重新计算 DAX 公式时处理以下内容:

  1. Dependencies

  2. 从属列的重新计算顺序

  3. Transactions

  4. Recalculation of volatile functions

Dependencies

当一个列依赖于另一个列时,并且另一个列的内容以任何方式更改,则可能需要重新计算所有相关列。

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

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

Sequence of Recalculation for Dependent Columns

在重新计算之前会计算依赖项。如果有相互依赖的多个列,Power Pivot 将遵循依赖项的顺序。这可确保列以最高速度按正确顺序处理。

Transactions

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

Recalculation of Volatile Functions

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

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

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