Power Pivot 中的计算列

应用对象
Microsoft 365 专属 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

通过计算列,可以将新数据添加到 PowerPivot 数据模型中的表中。 不必将值粘贴或导入到列中,而是创建定义列值的数据 分析表达式 (DAX) 公式。

例如,如果需要将销售利润值添加到 factSales 表中的每一行。 通过添加新的计算列并使用公式 =[SalesAmount]-[TotalCost]–[ReturnAmount],计算新值的方式是:从 SalesAmount 列的每行值减去 TotalCost 和 ReturnAmount 列的每行值。 然后,“利润”列可以在数据透视表、数据透视图或 Power View 报表中使用,就像使用任何其他列一样。

此图显示了 Power Pivot 中的计算列。

计算列

注意

虽然计算列和度量值由于各自依赖于公式而相似,但它们是不同的。 度量值最常用于数据透视表或数据透视图的 “值” 区域。 如果要将计算结果放置在数据透视表的不同区域(例如数据透视表中的列或行,或数据透视图中的轴上),请使用计算列。 有关度量值的详细信息,请参阅 Power Pivot 中的度量值

了解计算列

计算列中的公式与在 Excel 中创建的公式非常相似。 但是,不能为表中的不同行创建不同的公式。 相反,DAX 公式会自动应用于整个列。

当某列中包含公式时,将为每一行都计算值。 输入公式后,将立即计算列的结果。 然后,根据需要重新计算列值,例如刷新基础数据时。

可以根据度量值和其他计算列创建计算列。 例如,可以创建一个计算列以从文本字符串中提取一个数字,然后在另一个计算列中使用该数字。

示例

可支持包含添加到现有表中的数据的计算列。 例如,可以选择连接值、执行加法、提取子字符串或比较其他字段中的值。 要添加计算列,Power Pivot 中应已拥有至少一个表。

看看这个公式:

=EOMONTH ([开始日期],0])

使用 Contoso 示例数据,此公式从 Promotion 表的 StartDate 列中提取月份。 然后计算促销表中每一行的月末值。 第二个参数指定 StartDate 中该月之前或之后的月数;在这种情况下,0 表示同月。 例如,如果 StartDate 列中的值为 6/1/2001,则计算列中的值将为 6/30/2001。

命名计算列

默认情况下,新的计算列将添加到其他列的右侧,并自动为该列分配默认名称 CalculatedColumn1CalculatedColumn2 等。 创建列后,您可以根据需要重新排列和重命名列。

对计算列的更改有一些限制:

  • 每个列名在表中都应该是唯一的。
  • 避免使用已用于同一工作簿中度量值的名称。 尽管度量值和计算列可能具有相同的名称,但如果名称不唯一,则很容易获得计算错误。 若要避免意外调用度量值,请在引用列时始终使用完全限定的列引用。
  • 重命名计算列时,还必须更新依赖于现有列的任何公式。 除非处于手动更新模式,否则会自动更新公式的结果。 但是,此操作可能需要一些时间。
  • 有些字符不能用在列的名称中,也不能用在 Power Pivot 中其他对象的名称中。 有关更多信息,请参见《 Power Pivot 的 DAX 语法规范》中的“命名要求”。
重命名或编辑现有计算列:
  1. Power Pivot 窗口中,右键单击要重命名的计算列的标题,然后单击“ 重命名列”
  2. 键入新名称,然后按 Enter 接受新名称。

更改数据类型

更改计算列的数据类型的方式与更改其他列的数据类型相同。 不能执行以下数据类型更改:从文本到十进制、从文本到整数、从文本到货币、从文本到日期。 可以从文本更改为布尔值。

计算列的性能

计算列的公式可能比用于度量值的公式更占用资源。 一个原因是,系统始终针对表中的每一行计算列的结果,而仅针对数据透视表或数据透视图中使用的单元格计算度量值。

例如,具有 100 万行的表将始终具有包含 100 万个结果的计算列,并对性能产生相应的影响。 但是,数据透视表通常通过应用行标题和列标题来筛选数据。 这意味着仅针对数据透视表每个单元格中的数据子集计算度量值。

公式依赖于公式中的对象引用,例如计算值的其他列或表达式。 例如,基于另一列的计算列或包含具有列引用的表达式的计算在计算另一列之前无法计算。 默认情况下,启用自动刷新。 因此,请记住公式依赖项可能会影响性能。

要避免在创建计算列时出现性能问题,请遵循以下准则:

  • 与其创建包含许多复杂依赖项的单个公式,不如按步骤创建公式,并将结果保存到列中,以便可以验证结果并评估性能变化。
  • 对数据的修改通常会导致对计算列的更新。 可以通过将重新计算模式设置为手动来防止这种情况。 但是请记住,如果计算列中的任何值不正确,则在刷新并重新计算数据之前,该列将被禁用。
  • 如果更改或删除表之间的关系,在这些表中使用列的公式将失效。
  • 如果创建的公式包含循环或自引用依赖项,将会出现错误。

任务

有关使用计算列的详细信息,请参阅 创建计算列