创建简单的度量值

已完成

可以编写一个 DAX 公式,向模型中的任意表添加度量值。 度量值公式必须返回标量或单个值。

注意

在表格建模中,不存在计算度量值这种概念。 “计算”一词用于描述计算表和计算列。 该词将它们与源自 Power Query 的表和列区分开来,Power Query 不包含显式度量值这一概念。

度量值不将值存储在模型中。 相反,在查询时会使用它们来返回对模型数据的汇总。 此外,度量值不能直接引用表或列;它们必须将表或列传递到函数中才能生成汇总。

简单的度量值是聚合单个列的值的度量值;它会执行隐式度量值自动执行的操作。

在下一个示例中,你将向“Sales”表添加度量值。 在“字段”窗格中,选择“Sales”表。 若要创建度量值,在“表工具”上下文功能区上,选择“计算”组中的“新建度量值”。

图像显示“Sales”表的“表工具”上下文功能区。“新建度量值”命令已突出显示。

在编辑栏中,输入以下度量值定义,然后按 Enter。

Revenue =
SUM(Sales[Sales Amount])

此度量值定义将“收入”度量值添加到“Sales”表。 它使用 SUM DAX 函数对“销售额”列的值进行求和。

在“度量工具”上下文功能区中的“格式”组中,将小数位数设置为 2。

图像显示“格式”功能区选项卡,并且突出显示了“小数位数”属性,该属性设置为了 2。

提示

创建度量值后,立即设置格式选项,以确保所有报表视觉对象中的值一致并正确呈现。

现在将“收入”度量值添加到矩阵视觉对象。 请注意,它生成的结果与“销售额”隐式度量值相同。

在矩阵视觉对象中,删除“销售额”和“单价总和”。

接下来,你将创建更多的度量值。 使用以下度量值定义创建“成本”度量值,然后将格式设置为带有两个小数位数。

Cost =
SUM(Sales[Total Product Cost])

创建“利润”度量值,然后将格式设置为带有两个小数位数。

Profit =
SUM(Sales[Profit Amount])

请注意,“利润金额”列是计算列。 此主题将在本模块后续部分中进行讨论。

接下来,创建“数量”度量值,并将其格式设置为使用千位分隔符的整数。

Quantity =
SUM(Sales[Order Quantity])

创建三个单价度量值,然后将每个单价度量值的格式设置为带有两个小数位数。 请注意使用了不同的 DAX 聚合函数:MINMAXAVERAGE

Minimum Price =
MIN(Sales[Unit Price])
Maximum Price =
MAX(Sales[Unit Price])
Average Price =
AVERAGE(Sales[Unit Price])

现在,隐藏“单价”列,这样除非报表作者使用你的度量值,否则他们将无法汇总此列。

提示

添加度量值并隐藏列是数据建模者限制汇总选项的方法。

接下来,创建以下两个度量值,这两个度量值将计算订单和订单行的数量。 将这两个度量值的格式设置为带有零个小数位数。

Order Line Count =
COUNT(Sales[SalesOrderLineKey])
Order Count =
DISTINCTCOUNT('Sales Order'[Sales Order])

COUNT DAX 函数计算列中非空值的数量,而 DISTINCTCOUNT DAX 函数计算列中非重复值的数量。 由于一个订单可以有一个或多个订单行,所以“销售订单”列将具有重复值。 对此列中的值的非重复计数将准确地计算订单数。

或者,你也可以选择以更好的方式来编写“订单行计数”度量值。 不再对列中的值进行计数,改为使用 COUNTROWS DAX 函数,这样语义更清晰。 与之前介绍的聚合列值的聚合函数不同,COUNTROWS 函数对表的行数进行计数。

将前面创建的“订单行计数”度量值公式修改为以下参数:

Order Line Count =
COUNTROWS(Sales)

将每个度量值添加到矩阵视觉对象。

你所创建的所有度量值都是简单度量值,因为它们会聚合单个列或单个表。