何时使用计算列和计算字段

注意:  我们希望能够尽快以你的语言为你提供最新的帮助内容。 本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此内容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗? 请在此处查看本文的 英文版本 以便参考。

首先,学习如何使用 Power Pivot,大多数用户发现实 power 处于聚合或计算结果以某种方式。如果数据具有具有数值的列,您可以轻松地聚合其通过数据透视表或 Power View 字段列表中选择它。按自然,因为它是数字,它将自动进行求和,计算平均值,计算在内,或选择任何类型的聚合。这称为隐式度量值。隐式度量值非常适合快速且方便聚合,但他们有限制,并几乎始终可以使用显式度量值计算的列解决这些限制。

我们首先来了解一下示例,我们使用计算的列在 product 表中添加新的文本值的每一行。在产品表中的每行包含各种我们销售有关每个产品的信息。我们有产品名称、 颜色、 大小、 经销价格、 等列...我们有另一个名为包含一列 ProductCategoryName 产品类别的相关的表。我们需要的是产品表包含产品类别名称,从产品类别表中每个产品。在我们产品表中,我们可以创建计算的列命名产品类别,如下所示:

产品类别计算列

我们新的产品类别公式相关DAX 函数用于获取相关 Product Category 表中的 ProductCategoryName 列中值,并且每个产品 (每个行) 在产品表中输入这些值。

这是一个好示例,我们可以如何使用计算的列添加固定的值对于每一行,我们可以使用更高版本中的行、 列或筛选的数据透视表或 Power View 报表中的区域。

我们来创建另一个示例,我们希望计算我们的产品类别利润率。即使是在多个教程,这是一种常见情况。我们有销售表中包含事务数据的数据模型,并且没有销售额表和 Product Category 表之间的关系。在销售额表中,我们有具有销售额的列和具有成本的另一列。

我们可以创建通过在 SalesAmount 列中,如下所示的值从已售商品成本列中的值减去计算每行利润额的计算的列:

Power Pivot 表中的“利润”列

现在,我们可以创建数据透视表,并对我们新的利润字段和列,将产品类别字段添加到值区域 (在 PowerPivot 中的表的列是数据透视表字段列表中的字段)。结果是名为Profit 的总和的隐式度量值。它是不同产品类别的每个利润列中的值的聚合的量。我们结果如下所示:

简单的数据透视表

在这种情况下,利润仅有意义为中值的字段。如果我们要放置利润列区域中,我们的数据透视表应如下所示:

不具有有用值的数据透视表

放在列、 行或筛选器区域中时,我们利润字段不提供任何有用的信息。仅有意义为值区域中的聚合值。

我们的做法是创建一个名为计算 Sales 表中每一行利润率的 Profit 列。我们然后添加到其中的每个产品类别计算结果自动创建的隐式度量值,我们数据透视表的值区域的利润。如果您正在想我们真正计算利润我们的产品类别的两次,您正确。我们首先计算利润销售额表中每一行,我们然后添加到值区域它已聚合对于每个产品类别的利润。如果您也在想我们没有真正需要创建利润计算的列,您还将正确。但是,然后如何执行我们计算我们利润而无需创建利润计算的列?

利润、 真正想显式度量值为更好地计算。

现在,我们将离开我们利润销售额表中的计算的列和列中的产品类别和值的我们数据透视表中的利润我们结果进行比较。

在我们 Sales 表的计算区域中,我们将创建名为总利润度量值(以避免命名冲突)。最后,它将产生相同的结果为我们所做之前,但不利润计算列。

首先,在销售额表中,我们选择 SalesAmount 列,然后单击自动求和以创建显式总和的 SalesAmount度量值。请记住,是我们在 Power Pivot 中的表的计算区域中创建的显式度量值。我们执行相同的已售商品成本列。我们将重命名这些 SalesAmount已售商品成本,以使其更易于识别。

Power Pivot 中的“自动求和”按钮

然后我们使用此公式创建另一个度量值:

总利润: = [ 总 SalesAmount]-[总 已售商品成本]

注意: 我们也可以通过以下方式编写我们的公式为总 Profit:=SUM([SalesAmount])-SUM([COGS]),但通过创建单独的总 SalesAmount 和已售商品的总成本度量值,我们也可以使用它们在我们的数据透视表中,我们可以将其用作各种类型的度量值的其他公式中的参数。

之后,我们新的总利润度量值的格式更改为货币,我们可以将其添加到我们的数据透视表中。

数据透视表

您可以查看我们新的总利润度量值返回相同的结果创建利润计算的列,然后将其放置在值。区别是我们总利润度量值更有效,并使我们的数据模型更干净和精简因为我们计算时,并且仅对字段我们选择我们的数据透视表。我们不根本是真正需要的利润计算的列。

为什么此最后一部分是重要?计算的列添加到数据模型中,数据和数据占用的内存。如果我们刷新数据模型,还需要处理资源重新计算所有 Profit 列中的值。我们不真正需要占用如下所示的资源,因为我们真正想要计算我们利润时我们选择我们希望在数据透视表,如产品类别的利润的字段区域,或按日期。

我们来看一下另一个示例。一个计算的列在其中创建结果的第一次看到看起来正确,但...

在此示例中,我们要计算销售额占总销售额的百分比。我们创建一个名为我们销售表中,如下所示的销售百分比的计算的列:

销售额百分比计算列

我们公式的状态: 销售额表中的每一行,除以 SalesAmount 列中的金额 SalesAmount 列中的所有金额的总长度。

如果我们创建数据透视表和产品类别添加到列并选择我们新的销售百分比列以将其放入值,我们获取总和的销售额占总每个我们的产品类别。

数据透视表显示产品类别的销售百分比之和

还行。这看起来很好为止。但是,我们来添加切片器。我们添加日历年,,然后选择一年。在此例中,我们选择了 2007年。这是我们的获得。

数据透视表中的销售百分比之和不正确结果

第一次看到这可能仍会显示正确。但是,我们百分比真正总和 100%,因为我们希望 2007 知道我们的产品类别的每个的销售总额的百分比。因此哪里出错了?

我们 %的销售列计算百分比是除以 SalesAmount 列中所有值的总计 SalesAmount 列中的值的每一行。计算列中的值被固定。它们是表中每一行变结果。我们向我们的数据透视表添加销售百分比时它已汇总为 SalesAmount 列中所有值的总和。%的销售列中的所有值的总和将始终为 100%。

提示: 请务必阅读DAX 公式中的上下文。它提供更好地理解行级别上下文和筛选上下文,这是我们的描述。

由于它不会帮助我们,我们可以删除我们百分比 Sales 计算列。相反,我们将创建正确地计算总销售额,无论任何筛选器或应用切片器我们百分比的度量值。

请记住我们之前创建的 TotalSalesAmount 度量单位,只需对 SalesAmount 列求和的一个?我们它作为参数中使用我们的总利润度量值,然后我们将作为我们新的计算字段中的参数再次使用它。

提示: 创建显式度量值,如总 SalesAmount 和已售商品的总成本不是仅有用自己在数据透视表或报表,但它们也是有用中其他度量值作为参数时,您需要作为参数的结果。更有效且更易于阅读,这使得公式。这是正确的数据建模练习。

我们将使用以下公式创建新的度量值:

占总销售额: =([Total SalesAmount]) / 计算 ([总 SalesAmount],ALLSELECTED())

此公式说明: 从总 SalesAmount 结果除以的总计 SalesAmount 没有在数据透视表中定义的以外的任何列或行筛选器。

提示: 请务必阅读有关在 DAX 引用中的计算ALLSELECTED函数。

现在,我们将我们新的总销售额百分比添加到数据透视表时,如果我们获得:

数据透视表中的“销售百分比总和”的 正确结果

这看起来更好。现在我们占总销售额的每个产品类别计算总销售额的百分比为 2007 年。如果我们 CalendarYear 切片器中选择不同年份或超过一年,我们将获得我们的产品类别,新的百分比,但我们总计仍然是 100%。也可以添加其他切片器和筛选器。我们的总销售额的度量值的百分比始终将产生无论任何切片器或应用筛选器的销售总额的百分比。使用度量值,根据上下文由列和行中的字段和任何筛选器或应用切片器确定始终计算结果。这是度量值的强大功能。

下面是一些指南来帮助您决定计算列时或针对特定计算需要右度量值:

使用计算的列

  • 如果您希望新数据显示在行、 列或数据透视表中的筛选器中或在坐标轴,图例,或按 Power View 可视化效果中的图块,您必须使用计算的列。就像常规列的数据,计算的列可用作任何区域中的字段,然后如果它们是数值他们可以在聚合中值太。

  • 如果您希望新数据是固定的值的行。例如,您有日期表中包含的日期列,您希望包含刚刚月份数的另一列。您可以创建一个计算只需从日期列中的日期的月份数的计算的列。例如,= MONTH('Date'[Date])。

  • 如果您想要添加到表中的文本值的每一行,请使用计算的列。从不可以在值聚合文本值的字段。例如,=FORMAT('Date'[Date],"mmmm") 让我们为每个日期的月份名日期表中的日期列中。

使用度量值

  • 如果始终依赖于其他字段在数据透视表中选择的计算结果。

  • 如果您需要执行更复杂的计算,如计算基于的某种,筛选的计数或计算-年或差异,使用计算的字段。

  • 如果您想要将工作簿的大小保持最小和最大程度提高性能,创建尽可能多的计算为越好的度量值。在许多情况下,所有计算可以大大降低工作簿大小和加快刷新时间度量值。

保留在记住,没有任何与创建计算的列像我们 Profit 列,然后将其聚合数据透视表或报表中的错误。它是实际真正良好方便地了解并创建您自己的计算。随着您了解 Power Pivot 这两个非常强大功能时,要创建您可以最有效、 准确的数据模型。帮助您已经了解 hopefully。有一些其他非常重要的资源那里可以帮您做到。下面是几: DAX 公式中的上下文Power Pivot 中的聚合DAX 资源中心。并且,它具有更高级,并针对记帐和财务专业人员,而损益数据建模与 Microsoft Excel 中的 Power Pivot 分析样本加载出色的数据建模和公式的示例。

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×