处理 Power Pivot 中的数据时,可能需要不时刷新源中的数据、重新计算在计算列中创建的公式,或者确保数据透视表中显示的数据是最新的。
本主题介绍刷新数据与重新计算数据之间的区别,概述了如何触发重新计算,并介绍了用于控制重新计算的选项。
了解数据刷新与重新计算
Power Pivot 同时使用数据刷新和重新计算:
数据刷新 是指从外部数据源获取最新数据。 Power Pivot 不会自动检测外部数据源中的更改,但可以从 Power Pivot 窗口手动刷新数据,或者在 SharePoint 上共享工作簿时自动刷新数据。
重新计算 意味着更新工作簿中包含公式的所有列、表、图表和数据透视表。 由于重新计算公式会产生性能成本,因此请务必了解与每个计算关联的依赖项。
重要: 在重新计算工作簿中的公式之前,不应保存或发布工作簿。
手动与自动重新计算
默认情况下, Power Pivot 会根据需要自动重新计算,同时优化处理所需的时间。 尽管重新计算可能需要一些时间,但这是一项重要任务,因为在重新计算期间,将检查列的依赖项,如果列已更改、数据无效,或者如果曾经有效的公式中出现了错误,则会收到通知。 但是,可以选择放弃验证,仅手动更新计算,尤其是在使用复杂公式或非常大的数据集并且想要控制更新的计时时。
手动模式和自动模式都有优势:但是,强烈建议使用自动重新计算模式。 此模式使 Power Pivot 元数据保持同步,并防止因删除数据、更改名称或数据类型或缺少依赖项而导致的问题。
使用自动重新计算
使用自动重新计算模式时,对导致任何公式结果更改的数据的任何更改都将触发对包含公式的整个列的重新计算。 以下更改始终需要重新计算公式:
-
已刷新外部数据源中的值。
-
公式的定义已更改。
-
公式中引用的表或列的名称已更改。
-
表之间的关系已添加、修改或删除。
-
添加了新的度量值或计算列。
-
对工作簿中的其他公式进行了更改,因此应刷新依赖于该计算的列或计算。
-
已插入或删除行。
-
你应用了一个筛选器,该筛选器需要执行查询来更新数据集。 筛选器可以在公式中应用,也可以作为数据透视表或数据透视图的一部分应用。
使用手动重新计算
可以使用手动重新计算来避免计算公式结果的成本,直到准备就绪。 手动模式在以下情况下特别有用:
-
你正在使用模板设计公式,并且希望在验证公式之前更改公式中使用的列和表的名称。
-
您知道工作簿中的某些数据已更改,但您使用的是未更改的其他列,因此您希望推迟重新计算。
-
您正在使用具有许多依赖项的工作簿,并且希望推迟重新计算,直到你确定已进行所有必要的更改。
请注意,只要工作簿设置为手动计算模式,Excel 中的 Power Pivot 就不会对公式执行任何验证或检查,结果如下:
-
添加到工作簿的任何新公式都将标记为包含错误。
-
新的计算列中不会显示任何结果。
配置工作簿以手动重新计算
-
在 Power Pivot中,单击“ 设计> 计算 ”> “计算选项 ”> “手动计算模式”。
-
若要重新计算所有表,请单击“ 计算选项”> “立即计算”。
检查工作簿中的公式是否存在错误,并更新包含结果的表(如果有)。 根据数据量和计算次数,工作簿可能会在一段时间内无响应。
重要: 在发布工作簿之前,应始终将计算模式更改回自动。 这有助于防止在设计公式时出现问题。
重新计算故障排除
相关性
当一列依赖于另一列,并且该列的内容以任何方式发生更改时,可能需要重新计算所有相关列。 每当对 Power Pivot 工作簿进行更改时,Excel 中的 Power Pivot 都会对现有 Power Pivot 数据执行分析,以确定是否需要重新计算,并尽可能以最有效的方式执行更新。
例如,假设你有一个表 Sales,它与 表 Product 和 ProductCategory 相关; 和 Sales 表中的公式依赖于其他两个表。 对 Product 或 ProductCategory 表的任何更改都将导致重新计算 Sales 表中的所有计算列。 当你认为可能有按类别或按产品汇总销售额的公式时,这很有意义。 因此,要确保结果正确;必须重新计算基于数据的公式。
Power Pivot 始终对表执行完全重新计算,因为完全重新计算比检查更改的值更有效。 触发重新计算的更改可能包括删除列、更改列的数字数据类型或添加新列等重大更改。 但是,看似微不足道的更改(例如更改列的名称)也可能触发重新计算。 这是因为列的名称用作公式中的标识符。
在某些情况下, Power Pivot 可能会确定可以从重新计算中排除列。 例如,如果有一个公式从“产品”表中查找值(如 [Product Color]),并且更改的列在 Sales 表中为 [Quantity],则即使“Sales”和“产品”表相关,也不需要重新计算该公式。 但是,如果有任何依赖于 Sales[Quantity] 的公式,则需要重新计算。
依赖列的重新计算序列
依赖项是在重新计算之前计算的。 如果有多个列相互依赖, Power Pivot 将遵循依赖项序列。 这可确保以最佳速度按正确的顺序处理列。
Transactions
重新计算或刷新数据的操作作为事务进行。 这意味着,如果刷新操作的任何部分失败,其余操作将回滚。 这是为了确保数据不会处于部分处理状态。 不能像在关系数据库中那样管理事务,也不能创建检查点。
重新计算易失函数
某些函数(如 NOW、RAND 或 TODAY)没有固定值。 为避免性能问题,如果在计算列中使用查询或筛选,则通常不会导致重新计算此类函数。 仅当重新计算整个列时,才会重新计算这些函数的结果。 这些情况包括来自外部数据源的刷新或手动编辑数据,会导致重新计算包含这些函数的公式。 但是,如果在计算字段的定义中使用函数,则始终重新计算 NOW、RAND 或 TODAY 等易失函数。