问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
1
来源
1.
https://support.microsoft.com/zh-cn/office/%E4%BD%95%E6%97%B6%E4%BD%BF%E7%94%A8%E8%AE%A1%E7%AE%97%E5%88%97%E5%92%8C%E8%AE%A1%E7%AE%97%E5%AD%97%E6%AE%B5-ca18d63a-5b6d-4000-8ca2-14d2aadbb734

在学习Power Pivot时,用户经常会遇到如何聚合或计算数据的问题。本文将通过具体案例,详细介绍计算列和计算字段(度量值)的使用场景和区别,帮助用户更好地掌握Power Pivot的功能。

计算列的使用场景

示例1:为Product表添加产品类别名称

假设我们有一个Product表,其中包含产品名称、颜色、尺寸、经销商价格等信息,同时还有一个Product Category表,包含产品类别的名称。我们希望在Product表的每一行都添加产品类别的名称。

我们可以在Product表中创建一个名为"产品类别"的计算列,使用RELATED DAX函数从相关的产品类别表中获取ProductCategoryName列的值:

这个示例展示了如何使用计算列为每一行添加固定值,这些值可以在数据透视表的"行"、"列"或"筛选器"区域中使用。

示例2:计算产品类别的利润率

假设我们有一个Sales表,其中包含销售金额和成本数据,同时Sales表与产品类别表之间存在关系。我们希望计算每个产品类别的利润率。

我们可以在Sales表中创建一个计算列,通过从SalesAmount列中减去COGS列中的值来计算每行的利润金额:

但是,这种方法存在效率问题。计算列会为Sales表中的每一行计算利润,即使我们最终只需要按产品类别聚合的结果。此外,如果刷新数据模型,还需要重新计算所有值。

度量值的使用场景

示例1:计算总利润

我们可以创建一个名为"总利润"的度量值,避免创建利润计算列:

在Sales表的计算区域中,创建一个名为"总利润"的度量值:

总利润:=[Total SalesAmount] - [Total COGS]

将新的"总利润"度量值的格式更改为货币后,我们可以将其添加到数据透视表。可以看到,我们新的"总利润"度量值返回的结果与创建利润计算列,然后将其置于VALUES中相同。区别在于,"总利润"度量值的效率要高得多,并且使得数据模型更简洁。

示例2:计算销售额百分比

如果我们创建一个名为"销售额百分比"的计算列,公式为:

对于Sales表中的每一行,将SalesAmount列中的金额除以SalesAmount列中所有金额的总和。

当我们添加"日历年"切片器并选择一年时,会发现百分比总和不等于100%。这是因为计算列中的值是固定的,不会根据筛选器的变化而变化。

相反,我们可以创建一个度量值,用于正确计算总销售额的百分比,而不考虑应用了任何筛选器或切片器:

总销售额的百分比:= ([Total SalesAmount]) /CALCULATE ([Total SalesAmount],ALLSELECTED () )

这个度量值将始终产生总销售额的百分比,而不考虑应用了任何切片器或筛选器。

使用指南

  • 使用计算列

  • 如果希望新数据显示在数据透视表中的行、列或筛选器中,或者显示在Power View可视化效果的AXIS、LEGEND或平铺BY上,则必须使用计算列。

  • 如果希望新数据是行的固定值,例如,你有一个包含日期列的日期表,并且需要另一个仅包含月份数的列。

  • 如果要将每行的文本值添加到表中,请使用计算列。

  • 使用度量值

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

  • 如果需要执行更复杂的计算,例如基于某种类型的筛选器计算计数,或者计算同比或方差,请使用计算字段。

  • 如果要将工作簿的大小保持在最小并最大化其性能,请创建尽可能多的计算,以度量值。

虽然创建计算列与使用利润列一样,然后将其聚合到数据透视表或报表中没有任何问题,但随着对Power Pivot功能的深入了解,建议创建尽可能高效、最准确的数据模型。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号