每当工作簿的数据模型发生更改时,Power Pivot会对现有数据执行分析,以确定是否需要重新计算并以最有效的方式执行更新.
Power Pivot在重新计算DAX公式和减去期间处理以下内容;
依赖性
序列依赖列的重新计算
交易
重新计算易失性函数
依赖关系
当列依赖于另一列,并且该另一列的内容以任何方式更改时,可能需要重新计算所有相关列.
Power Pivot始终对表执行完整的重新计算,因为完全重新计算比检查更改的值更有效.触发重新计算的更改可能包括删除列,更改列的数字数据类型或添加新列.这些变化被视为重大变化.但是,看似微不足道的更改(例如更改列的名称)也可能会触发重新计算.这是因为列的名称在DAX公式中用作标识符.
在某些情况下,Power Pivot可能会确定可以从重新计算中排除列.
相关列的重新计算顺序
在重新计算之前计算相关性.如果有多个列相互依赖,则Power Pivot遵循依赖关系序列.这可确保以最大速度按正确的顺序处理列.
事务
重新计算或刷新数据的操作作为事务发生.这意味着如果刷新操作的任何部分失败,则回滚剩余的操作.这是为了确保数据不会处于部分处理状态.但是,您无法像在关系数据库中那样管理事务或创建检查点.
重新计算易失性函数
DAX函数,如NOW, RAND或TODAY没有固定值,被称为易失性函数.如果在计算列中使用此类DAX函数,则执行查询或过滤通常不会导致重新评估它们以避免性能问题.
这些DAX函数的结果仅在重新计算整个列时重新计算.这些情况包括从外部数据源刷新或手动编辑导致重新评估包含这些函数的DAX公式的数据.
但是,如果函数是这样的函数,将始终重新计算这些函数.用于定义计算字段.