重新计算公式

当您使用 PowerPivot for Excel 工作簿中的数据时,可能需要不时地从源刷新数据,重新计算已在计算列中创建的公式,或确保数据透视表中显示的数据是最新的。

本主题说明刷新数据与重新计算数据之间的差异,概述如何触发重新计算,并介绍用于控制重新计算的选项。

了解数据刷新与重新计算

PowerPivot 将使用数据刷新和重新计算:

数据刷新表示从外部数据源获取最新数据。PowerPivot 不自动检测外部数据源中的更改,但可以从 PowerPivot 工作簿手动刷新数据,或者在工作簿在 SharePoint 上共享时自动刷新数据。有关详细信息,请参阅更新 PowerPivot 中的数据的不同方式

重新计算表示更新工作簿中包含公式的所有列、表、图表和数据透视表。因为公式的重新计算会带来性能开销,因此了解与每个计算关联的依赖关系十分重要。

本主题说明重新计算的工作方式。有关重新计算带来的潜在性能影响的详细信息,请参阅下面的“重新计算故障排除”部分。

重要说明重要提示

切勿在重新计算工作簿中的公式之前保存或发布该工作簿。

手动重新计算与自动重新计算

默认情况下,PowerPivot 将在优化处理所需的时间时,根据需要自动重新计算。虽然重新计算可能要花些时间,但这是一项重要任务,因为在重新计算期间,将检查列依赖关系,并且如果某个列发生改变、数据无效或过去正常使用的公式中发生错误,您将得到通知。但是,您可以选择放弃验证并仅以手动方式更新计算,尤其是在您使用复杂公式或非常大的数据集并且希望控制更新时间的情况下。

手动模式和自动模式各有优点;不过,强烈建议您使用自动重新计算模式。这种模式可保持 PowerPivot 元数据同步,并防止因数据删除、名称或数据类型更改或依赖项缺失而引起的问题。 

使用自动重新计算

在使用自动重新计算模式时,如果对工作簿中数据的任何更改将导致任何公式的结果发生变化,则将对包含公式的整列触发重新计算。以下更改总是需要重新计算公式:

  • 已刷新来自外部数据源的值。

  • 公式的定义发生变化。

  • 公式中引用的表或列的名称发生变化。

  • 添加、修改或删除表之间的关系。

  • 添加新的度量值或计算列。

  • 对 PowerPivot 工作簿中其他公式进行了更改,因此应对依赖于该计算的列或计算进行刷新。

  • 已插入或删除行。

  • 您已应用要求执行查询以更新数据集的筛选器。该筛选器可能已在公式中应用,或已作为数据透视表或数据透视图的一部分应用。

使用手动重新计算

您可以使用手动重新计算,以避免在您准备好之前带来计算公式结果的开销。在以下情况下,手动模式特别有用:

  • 您正在使用模板设计一个公式,并想在对该公式进行验证之前更改公式中所使用的列和表的名称。

  • 您知道工作簿中的某些数据已更改,但是您正在使用尚未更改的其他列,因此想要推迟重新计算。

  • 您正在具有许多依赖项的工作簿中工作,并且想要延迟重新计算,直至您确定已完成所有必要的更改。

请注意,只要工作簿设置为手动计算模式,PowerPivot for Excel 就不会对公式执行任何验证或检查操作,因为这将导致以下结果:

  • 您添加到工作簿中的任何新公式都带有指示包含错误的标志。

  • 新计算列中不显示任何结果。

有关如何更改计算模式或触发公式的手动计算的说明,请参阅下面的手动重新计算公式

手动重新计算公式

本主题说明如何临时更改 PowerPivot 工作簿的设置,从而不再自动更新公式的结果。建议您尽可能使用**“自动”**选项;但是,在设计公式时,手动重新计算公式有时是减小对工作簿性能影响的必要措施。

更改此设置后,您必须手动触发对基于公式的任何计算的更新。

重要说明重要提示

在发布工作簿之前,总应将计算模式改回自动。这样有助于避免在设计公式时出现问题。

配置手动重新计算

重新计算意味着更新使用已更改数据的任何公式的结果。当公式发生更改时、影响计算结果的数据更改时或者数据刷新时,您都需要执行重新计算。有关数据刷新的详细信息,请参阅更新 PowerPivot 中的数据的不同方式

注意注意

在 Windows Vista 和 Windows 7 中,PowerPivot 窗口中的功能可从功能区中访问,本主题将对此进行讨论。在 Windows XP 中,这些功能是从一组菜单中访问的。如果您使用的是 Windows XP,并且希望了解菜单命令如何与功能区命令相关,请参阅 Windows XP 中的 PowerPivot 用户界面

配置工作簿进行手动重新计算

  1. PowerPivot 窗口中单击**“设计”选项卡,然后在“计算”组中单击“计算选项”**。

  2. 单击**“手动计算模式”**。

  3. 若要重新计算所有表,请再次单击**“计算选项”,然后单击“立即计算”**。

    将检查工作簿中的公式是否有错误,并且将用结果(如果有)更新表。根据计算的数据量和计算量,工作簿可能在一段时间内停止响应。

重新计算故障排除

本节提供计划何时重新计算工作簿时应注意的其他技术提示。有关重新计算和刷新工作簿中数据的常规信息,请参阅以下主题:

重新计算公式

更新 PowerPivot 中的数据的不同方式

依赖关系

当某列依赖于另一列,并且后一列的内容已通过任何方式发生变化时,所有相关的列可能需要重新计算。只要对 PowerPivot 工作簿进行了更改,PowerPivot for Excel 就会对现有 PowerPivot 数据执行分析,以确定是否需要重新计算,然后以最有效的方法执行更新。

例如,假设您有一个 Sales 表,它与 Product 表和 ProductCategory 表相关;Sales 表中的公式依赖于后两个表。对 Product 表或 ProductCategory 表的任何更改都将导致重新计算 Sales 表中的所有计算列。如果您认为可能会使用按类别或按产品汇总销售额的公式,这是有意义的。因此,要确保结果正确,必须重新计算基于数据的公式。

PowerPivot 始终执行表的完整重新计算,因为与检查更改的值相比,完整的重新计算效率更高。引发重新计算的更改包括删除列、更改列的数值数据类型或添加新列这样的重大更改。但是,看起来微不足道的更改(更改列名称)也可能引发重新计算。这是因为列名称在公式中用作标识符。

在某些情况下,PowerPivot for Excel 可能确定可以从重新计算中排除列。例如,如果您有一个从 Products 表中查找值(如 [Product Color])的公式,而所更改的列为 Sales 表中的 [Quantity],则无需对该公式进行重新计算,即使 Sales 表和 Products 表相关也不例外。但是,如果您有任何公式依赖 Sales[Quantity],则需要进行重新计算。

依赖列的重新计算顺序

在任何重新计算之前计算依赖项。如果有多个列且它们互相依赖,PowerPivot 将遵循依赖项的顺序。这可确保以最大速度按正确的顺序对列进行处理。

事务

执行重新计算或刷新数据的操作就如同一个“事务”。这意味着,如果刷新操作的任何部分失败,剩下的操作都将回滚。这是为了确保数据不会处于部分处理状态。您不能像在关系数据库中那样管理事务,也不能创建检查点。

可变函数的重新计算

某些函数(如 NOW、RAND 和 TODAY)没有固定值。为了避免性能问题,如果此类函数用于计算列中,则查询或筛选的执行通常不会导致重新计算此类函数。仅当重新计算整列时才会重新计算这些函数的结果。这些情况包括来自外部数据源的刷新或手动编辑数据,会导致重新计算包含这些函数的公式。但是,如果在度量值定义中使用可变函数(如 NOW、RAND 或 TODAY),则总是会重新计算这些函数。