创建度量值
本主题说明如何基于 DAX 示例工作簿中的数据创建“度量值”。此工作簿包括来自 AdventureWorks 数据库的基于自行车的数据。有关从哪里获取示例工作簿的信息,请参阅获取 PowerPivot 示例数据。有关公式的详细信息,请参阅为计算生成公式。
了解度量值
度量值是为用于使用 PowerPivot 数据的数据透视表(或数据透视图)而专门创建的公式。度量值可以基于标准聚合函数,如 COUNT 或 SUM;或者,您可以通过使用 DAX 定义自己的公式。度量值用于数据透视表的**“值”**区域中。如果您想要将计算的结果放置于数据透视表的不同区域中,则应改为使用计算列(创建计算列)。
在您创建某一度量值时,将该度量值与工作簿中的表相关联;度量值定义与此表一起保存。它出现在 PowerPivot 字段列表中并且可用于工作簿的所有用户。
创建和编辑度量值
在创建度量值之前,您必须首先将数据透视表或数据透视图添加到您的 PowerPivot 工作簿中。在添加度量值时,对数据透视表的**“值”**区域中的每个单元计算该公式。因为会为每个行和列标题组合都创建一个结果,所以度量值的结果在每个单元中可能会不同。
在您将某一数据透视表或数据透视图添加到 PowerPivot 工作簿后,使用**“度量值设置”对话框可以添加包含一个公式的度量值。该公式定义求和、取平均值或使用 PowerPivot 窗口中列和表的其他计算。您创建标准聚合的方式与在 Excel 中创建标准聚合的方式相同,就是将字段拖到“值”**字段区域中,然后选择标准聚合方法之一:COUNT、SUM、AVERAGE、MIN 或 MAX。在下一节中将讨论自定义聚合。
您创建的度量值可用于多个数据透视表或数据透视图中。度量值的名称在工作簿内必须唯一,并且您不能使用用于工作簿中任何列的相同名称。
示例:创建使用自定义聚合的度量值
在这个示例中,您将创建一个自定义聚合,该聚合使用新的 DAX 聚合函数之一 SUMX;并且还使用函数 ALL,在这个例子中,该函数返回某个列中的所有值,而与该列的上下文无关。该示例使用来自 DAX 示例工作簿的以下几列:
DateTime[CalendarYear]
ProductCategory[ProductCategoryName]
ResellerSales_USD[SalesAmount_USD]
该示例使用一个数据透视表,该数据透视表具有 CalendarYear 作为行标签,具有 ProductCategoryName 作为列标签;SalesAmount_USD 用于度量值公式中。该示例回答的问题是:每年每个产品类别的销售额占从 2001 年到 2004 年的总销售额的多少百分比?例如,这使您可以看到自行车销售额在 2003 年占总销售额的百分比。为了回答此问题,我们使用以下度量值公式:
=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
按如下所示构造公式:
分子 SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) 是数据透视表中当前单元的 ResellerSales_USD[SalesAmount_USD] 中各值的总和。具有 CalendarYear 和 ProductCategoryName 的上下文意味着该值对于年份和产品类别的每个组合将是不同的。例如,在 2003 年售出的自行车的总数不同于在 2004 年售出的附件的总数。
对于分母,可以通过指定表 ResellerSales_USD 来开始,并且使用 ALL 函数来删除该表上的所有上下文。这确保该值对于年份和产品类别的每个组合将是相同的:分母将始终是从 2001 年到 2004 年的总销售额。
然后,您使用 SUMX 函数计算 ResellerSales_USD[SalesAmount_USD] 列中各值的和。换言之,获取所有分销商销售额的 ResellerSales_USD[SalesAmount_USD] 之和。
![]() |
---|
在 Windows Vista 和 Windows 7 中,PowerPivot 窗口中的功能可从功能区中访问,本主题将对此进行讨论。在 Windows XP 中,这些功能是从一组菜单中访问的。如果您使用的是 Windows XP,并且希望了解菜单命令如何与功能区命令相关,请参阅 Windows XP 中的 PowerPivot 用户界面。 |
创建使用自定义聚合的度量值
在 PowerPivot 窗口中单击**“主文件夹”选项卡,然后在“报表”组中单击“数据透视表”**。
在**“创建数据透视表”对话框中,确认已选中“新建工作表”,然后单击“确定”**。
PowerPivot 在新的 Excel 工作表中创建一个空的数据透视表,并且在工作簿的右侧显示 PowerPivot 字段列表。
在 Excel 窗口中,使用**“PowerPivot 字段列表”**可以将列添加到数据透视表:
找到 DateTime 表,并且将列 CalendarYear 拖到数据透视表的**“行标签”**。
找到 ProductCategory 表,并且将列 ProductCategoryName 拖到数据透视表的**“行标签”**。
在 Excel 窗口中,在 PowerPivot 选项卡的**“度量值”组中,单击“新建度量值”**。
在**“度量值设置”对话框中,对于“表名”**单击向下箭头,然后从下拉列表中选择 ResellerSales_USD。
所选的表确定将存储度量值定义的位置。度量值无需与该度量值引用的表一起存储。
对于**“度量值名称(所有数据透视表)”**,键入 AllResSalesRatio。
此名称用作度量值的标识符;因此,它在工作簿中必须唯一,并且不能更改。
对于**“自定义名称(此数据透视表)”**,键入 All Reseller Sales Ratio。
此名称仅在当前数据透视表中使用,用于显示目的。例如,您可能在其他数据透视表中重用度量值 AllResSalesRatio,但是给它取个其他名称或用在其他语言中。
在**“公式”**文本框中,将光标放置在等号 (=) 后。
键入 SUMX,然后键入一个括号。
=SUMX(
在您键入时,**“公式”**文本框下的工具提示将指示该 SUMX 函数需要两个参数:第一个参数是一个表或者返回表的表达式,第二个参数是提供可求和的数字的表达式。
键入 Res,然后从列表中选择 ResellerSales_USD 并按下 Tab 键。
列名将插入到公式中,如下所示:
=SUMX(ResellerSales_USD
键入一个逗号。
工具提示将更新以显示所需的下一个参数是 expression。表达式可以是一个值、对列的引用或者它们的某种组合。例如,您可以创建对其他两列求和的表达式。对于此示例,您将提供包含每个分销商的销售额的列的名称。
键入表名称的前几个字母,该表包含您要包含的列。对于此示例,键入 Res,然后从列表中选择 ResellerSales_USD[SalesAmount_USD] 列。
按 Tab 键以便将该列名称插入到公式中并添加右括号,如下所示:
=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
键入正斜杠,然后键入以下代码或者将以下代码复制并粘贴到**“度量值设置”**对话框中:
SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
请注意 ALL 函数在 SUMX 函数内是如何嵌套的。整个公式现在应如下所示:
=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
单击**“检查公式”**。
检查公式的语法或引用错误。更正发现的所有错误,如缺少括号或逗号。
单击**“确定”**。
度量值现在使用日历年度和产品类别的每个组合的值填充数据透视表。
设置表的格式:
选择数据透视表中的数据,包括**“总计”**行。
在**“主文件夹”选项卡的“编号”组中,单击百分比按钮 (%) 一次,然后单击增加小数位数按钮 (<- .0 .00**) 两次。
完成的表将如下所示。您现在可以看到产品和年度的每个组合占总销售额的百分比。例如,自行车在 2003 年的销售额占从 2001 年到 2004 的年的总销售额的 31.71%。
所有分销商销售额 |
列标签 |
|
|
|
|
行标签 |
Accessories |
Bikes |
Clothing |
Components |
总计 |
2001 |
0.02% |
9.10% |
0.04% |
0.75% |
9.91% |
2002 |
0.11% |
24.71% |
0.60% |
4.48% |
29.90% |
2003 |
0.36% |
31.71% |
1.07% |
6.79% |
39.93% |
2004 |
0.20% |
16.95% |
0.48% |
2.63% |
20.26% |
总计 |
0.70% |
82.47% |
2.18% |
14.65% |
100.00% |
编辑现有度量值
若要查看现有度量值的定义,应使用 PowerPivot 字段列表。**“PowerPivot 字段列表”包含当前 PowerPivot 窗口中所有表的列表,包括原始数据列、计算列以及您可能已定义的任何度量值。您可以右键单击任何度量值的定义,然后选择“编辑公式”**以便打开可用于查看和修改度量值定义的对话框。
查看和更改现有度量值
在 Excel 窗口中,单击数据透视表或数据透视图区域中的任意位置,以显示**“PowerPivot 字段列表”**。
在**“PowerPivot 字段列表”**中,找到包含您创建的度量值的表。
每个表都可以包含基列、计算列和度量值。度量值由度量值名称右侧的一个小计算器图标表示。
对于此示例,右键单击 SumAmtByReseller,然后单击**“编辑公式”**。
在**“度量值设置”**对话框中,编辑公式。
还可以更改度量值名称或自定义名称以及关联表。