Excel Dax 简明教程
Excel DAX - Calculated Fields / Measures
数据模型中的表中的 calculated field 是通过 DAX 公式获得的字段。在早期版本的 Power Pivot 中,计算字段被称为度量。在 Excel 2013 中,它被重新命名为计算字段。但是,在 Excel 2016 中,它又被重新命名为度量。如果您参考任何文档,您会观察到这两个术语混淆在一起。请注意,计算字段和度量这两个术语是同义的。在本教程中,我们使用术语计算字段。
Understanding Calculated Fields
计算字段是专门为在数据透视表(或数据透视图)中使用而创建的公式。
您可以基于标准聚合函数(如 COUNT 或 SUM)或通过定义自己的 DAX 公式来创建计算字段。
以下是计算字段和计算列之间的区别 −
-
计算字段只能用于数据透视表的 VALUES 区域中。
-
具有计算结果的计算列还可以在 ROWS、COLUMNS 和 FILTERS 区域中使用。
Calculated Field – An Example
考虑以下奥运会数据的数据模型 −
如以上屏幕截图所示,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,请执行以下操作 −
-
单击 Results 表中 Medal 列下方的计算区域中的单元格。该单元格将变为高亮显示。
-
在公式栏中键入 Medal Count:=COUNTA([Medal])。
按 Enter 键。
如以上屏幕截图所示,计算字段显示在所选单元格中,显示值为 34,094。这个数字是 Results 表中的总行数。因此,乍一看并没有多大意义。正如前面所讨论的,只有将计算字段添加到 Power PivotTable 或 Power PivotChart 中才能看到它的实际用途。
Using the Calculated Field in a Power PivotTable
若要使用计算字段计算每个国家的奖牌数,请执行以下操作 −
-
在 Power Pivot 窗口中的功能区上单击“数据透视表”。
-
在下拉列表中单击“数据透视表”。
将出现创建数据透视表对话框。
-
Click the Existing Worksheet.
-
选择您想要放置数据透视表的位置。
将创建一个空数据透视表。
-
在“数据透视表字段”列表中单击“Results”表。
-
点击字段 - 国家/地区和奖牌数。
如您所见,奖牌数被添加到值区域,国家/地区被添加到行区域。使用国家/地区字段值出现在行中的数据透视表进行创建。并且针对每一行,对奖牌数进行计算和显示。正是以此方式,计算出的字段评估所用的 DAX 公式并显示值。
-
将“结果”表中的“运动”字段添加到行区域。
正如您在上述屏幕截图中看到的那样,对每个国家/地区计算奖牌数,由运动分类,以及针对国家/地区本身计算一个子总数。
这是 DAX 补充 Power 功能的方式。
Types of Calculated Fields
计算字段有两种类型 - 隐式和显式。
-
在 Power数据透视表字段列表窗格中创建一个 implicit calculated field 。
-
在 PowerPivot 窗口中的表中或在 Excel 窗口中的 PowerPivot Ribbon 中创建一个 explicit calculated field 。
Creating an Implicit Calculated Field
隐式计算字段可以用两种方式创建,都位于 PowerPivot 数据透视表字段窗格中。
Creating an Implicit Calculated Field in the PivotTable Fields List
您可以使用数据透视表字段列表中的奖牌字段创建奖牌数量字段,如下所示 -
-
取消选择字段奖牌数。
-
右键单击字段奖牌。
-
在下拉列表中点击添加到值。
奖牌数出现在值区域中。奖牌数列将添加到数据透视表。
Creating an Implicit Calculated Field in the VALUES Area
您可以在值区域中创建隐式计算字段 - 父行百分比,以表达一个国家/地区获得的每项运动的奖牌数占该国家/地区获得的奖牌总数的百分比。
-
点击值区域中奖牌数框中的向下箭头。
-
在下拉列表中点击值字段设置。
将出现Value Field Settings对话框。
-
在自定义名称框中键入 % 奖牌。
-
点击显示值方式选项卡。
-
单击“显示值为”下方的框。
-
单击“父行总计的百分比”。
-
单击“数字格式”按钮。
将出现“设置单元格格式”对话框。
-
Click Percentage.
-
在小数位数处键入 0。
-
Click OK.
-
在“值字段设置”对话框中单击“确定”。
-
选择“不显示小计”。
你创建了另一个隐式计算域“% Medals”,正如你所观察到的,对于每个国家,每一项体育竞技所占的奖牌比例都会显示出来。
Drawbacks of an Implicit Calculated Field
隐式计算域容易创建。事实上,你一直在 Excel 数据透视表和透视图表中创建它们。但是,它们有以下缺点:
-
They are volatile 。这意味着如果你取消选择你用来计算这个域的域,它将被删除。如果你想要再次显示它,你必须再次创建它。
-
Their scope is limited 从而创建了数据透视表或透视图表。如果你在另一个工作表中创建另一个数据透视表,你必须再次创建计算域。
另一方面,显式计算域将与数据表一起保存,并且在你选择该数据表时可用。
Creating an Explicit Calculated Field
你可以用两种方式创建显式计算域:
-
在数据模型中的数据表计算区。你已经在“在数据表中创建计算域”章节中学到了这一点。
-
从 Excel 表中的 PowerPivot 功能区。你将在下一章节学习这种创建显式计算域的方法。
Creating an Explicit Calculated Field from PowerPivot Ribbon
要从 PowerPivot 功能区创建显式计算域,请执行以下步骤:
-
单击工作簿中功能区上的 POWERPIVOT 选项卡。
-
单击计算区中的“计算域”。
-
单击下拉列表中的“新建计算域”。
计算字段对话框出现。
-
填写所需信息,如以下屏幕截图所示。
-
单击检查公式按钮。
-
仅当公式中没有错误时,单击确定。
如您所见,您可以在此对话框中定义计算字段的类别和格式。此外,您可以使用 IntelliSense 功能了解函数的使用,并使用自动完成功能轻松完成函数、表和列的名称。有关 IntelliSense 功能的详细信息,请参阅章节 – DAX Formulas 。
这是创建显式计算字段的推荐方式。