Excel Dax 简明教程

Excel DAX - Calculated Fields / Measures

数据模型中的表中的 calculated field 是通过 DAX 公式获得的字段。在早期版本的 Power Pivot 中,计算字段被称为度量。在 Excel 2013 中,它被重新命名为计算字段。但是,在 Excel 2016 中,它又被重新命名为度量。如果您参考任何文档,您会观察到这两个术语混淆在一起。请注意,计算字段和度量这两个术语是同义的。在本教程中,我们使用术语计算字段。

Understanding Calculated Fields

计算字段是专门为在数据透视表(或数据透视图)中使用而创建的公式。

您可以基于标准聚合函数(如 COUNT 或 SUM)或通过定义自己的 DAX 公式来创建计算字段。

以下是计算字段和计算列之间的区别 −

  1. 计算字段只能用于数据透视表的 VALUES 区域中。

  2. 具有计算结果的计算列还可以在 ROWS、COLUMNS 和 FILTERS 区域中使用。

Saving Calculated Field

计算字段将与它的源表一起保存在数据模型中。它作为表中的一个字段显示在 Power PivotTable 或 Power PivotChart 字段列表中。

Using Calculated Field

要使用计算字段,您必须从 Power PivotTable 字段列表中选择它。计算字段将添加到 VALUES 区域,并且将评估用于计算字段的公式。为行列字段的每个组合创建一个结果。

Calculated Field – An Example

考虑以下奥运会数据的数据模型 −

calculated field

如以上屏幕截图所示,Results 表有一个 Medal 字段,其中包含值 – Gold、Silver 或 Bronze,用于每个包含 Sport – Event - Country – Date 组合的行。假设您想要每个国家的奖牌数,那么您可以使用以下 DAX 公式创建一个计算字段 Medal Count −

Medal Count := COUNTA([Medal])

Creating a Calculated Field in a Table

若要在 Results 表中创建计算字段 Medal Count,请执行以下操作 −

  1. 单击 Results 表中 Medal 列下方的计算区域中的单元格。该单元格将变为高亮显示。

  2. 在公式栏中键入 Medal Count:=COUNTA([Medal])。

creating calculated field in table

按 Enter 键。

press enter

如以上屏幕截图所示,计算字段显示在所选单元格中,显示值为 34,094。这个数字是 Results 表中的总行数。因此,乍一看并没有多大意义。正如前面所讨论的,只有将计算字段添加到 Power PivotTable 或 Power PivotChart 中才能看到它的实际用途。

Using the Calculated Field in a Power PivotTable

若要使用计算字段计算每个国家的奖牌数,请执行以下操作 −

  1. 在 Power Pivot 窗口中的功能区上单击“数据透视表”。

  2. 在下拉列表中单击“数据透视表”。

using calculated field in power pivottable

将出现创建数据透视表对话框。

  1. Click the Existing Worksheet.

  2. 选择您想要放置数据透视表的位置。

将创建一个空数据透视表。

  1. 在“数据透视表字段”列表中单击“Results”表。

  2. 点击字段 - 国家/地区和奖牌数。

empty pivottable created

如您所见,奖牌数被添加到值区域,国家/地区被添加到行区域。使用国家/地区字段值出现在行中的数据透视表进行创建。并且针对每一行,对奖牌数进行计算和显示。正是以此方式,计算出的字段评估所用的 DAX 公式并显示值。

  1. 将“结果”表中的“运动”字段添加到行区域。

add field sport

正如您在上述屏幕截图中看到的那样,对每个国家/地区计算奖牌数,由运动分类,以及针对国家/地区本身计算一个子总数。

这是 DAX 补充 Power 功能的方式。

Types of Calculated Fields

计算字段有两种类型 - 隐式和显式。

  1. 在 Power数据透视表字段列表窗格中创建一个 implicit calculated field

  2. 在 PowerPivot 窗口中的表中或在 Excel 窗口中的 PowerPivot Ribbon 中创建一个 explicit calculated field

Creating an Implicit Calculated Field

隐式计算字段可以用两种方式创建,都位于 PowerPivot 数据透视表字段窗格中。

Creating an Implicit Calculated Field in the PivotTable Fields List

您可以使用数据透视表字段列表中的奖牌字段创建奖牌数量字段,如下所示 -

  1. 取消选择字段奖牌数。

  2. 右键单击字段奖牌。

  3. 在下拉列表中点击添加到值。

creating implicit calculated field

奖牌数出现在值区域中。奖牌数列将添加到数据透视表。

medal column count

Creating an Implicit Calculated Field in the VALUES Area

您可以在值区域中创建隐式计算字段 - 父行百分比,以表达一个国家/地区获得的每项运动的奖牌数占该国家/地区获得的奖牌总数的百分比。

  1. 点击值区域中奖牌数框中的向下箭头。

  2. 在下拉列表中点击值字段设置。

creating implicit calculated field in values area

将出现Value Field Settings对话框。

  1. 在自定义名称框中键入 % 奖牌。

  2. 点击显示值方式选项卡。

  3. 单击“显示值为”下方的框。

  4. 单击“父行总计的百分比”。

value field settings
  1. 单击“数字格式”按钮。

将出现“设置单元格格式”对话框。

  1. Click Percentage.

  2. 在小数位数处键入 0。

  3. Click OK.

  4. 在“值字段设置”对话框中单击“确定”。

  5. 选择“不显示小计”。

format cells dialog box

你创建了另一个隐式计算域“% Medals”,正如你所观察到的,对于每个国家,每一项体育竞技所占的奖牌比例都会显示出来。

Drawbacks of an Implicit Calculated Field

隐式计算域容易创建。事实上,你一直在 Excel 数据透视表和透视图表中创建它们。但是,它们有以下缺点:

  1. They are volatile 。这意味着如果你取消选择你用来计算这个域的域,它将被删除。如果你想要再次显示它,你必须再次创建它。

  2. Their scope is limited 从而创建了数据透视表或透视图表。如果你在另一个工作表中创建另一个数据透视表,你必须再次创建计算域。

另一方面,显式计算域将与数据表一起保存,并且在你选择该数据表时可用。

Creating an Explicit Calculated Field

你可以用两种方式创建显式计算域:

  1. 在数据模型中的数据表计算区。你已经在“在数据表中创建计算域”章节中学到了这一点。

  2. 从 Excel 表中的 PowerPivot 功能区。你将在下一章节学习这种创建显式计算域的方法。

Creating an Explicit Calculated Field from PowerPivot Ribbon

要从 PowerPivot 功能区创建显式计算域,请执行以下步骤:

  1. 单击工作簿中功能区上的 POWERPIVOT 选项卡。

  2. 单击计算区中的“计算域”。

  3. 单击下拉列表中的“新建计算域”。

creating explicit calculated

计算字段对话框出现。

  1. 填写所需信息,如以下屏幕截图所示。

calculated field dialog box
  1. 单击检查公式按钮。

  2. 仅当公式中没有错误时,单击确定。

如您所见,您可以在此对话框中定义计算字段的类别和格式。此外,您可以使用 IntelliSense 功能了解函数的使用,并使用自动完成功能轻松完成函数、表和列的名称。有关 IntelliSense 功能的详细信息,请参阅章节 – DAX Formulas

这是创建显式计算字段的推荐方式。