📜  DAX公式重新计算疑难解答

📅  最后修改于: 2020-12-01 04:48:23             🧑  作者: Mango


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

在重新计算DAX公式期间,Power Pivot处理以下问题:

  • 依存关系
  • 从属列的重新计算顺序
  • 交易次数
  • 重新计算易失函数

依存关系

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

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

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

从属列的重新计算顺序

依赖关系是在重新计算之前进行计算的。如果有多个相互依赖的列,则Power Pivot将遵循依赖关系的顺序。这样可以确保以最快的速度按正确的顺序处理列。

交易次数

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

重新计算易失函数

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

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

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