首页 > 解决方案 > DAX:按类别汇总 PRODUCTX 结果

问题描述

我正在制作一个基于以下逻辑的销售预测表:我们有一个完整的 2019 年销售表,其中产品按集群分类,如果需要,可以在每个国家/地区的集群内的子类别中进行分类。(LUT_Sales19) 我们为每个国家和子类别提供了另一个 Excel 表格,预计到 2025 年的年增长率。(I_Growth)

我想通过将 2019 年的相应销售额乘以复合增长率来计算第 x 年和第 y 类的预期销售额。(例如,如果我们有一个英国的销售数字 x,2019 年类别 1 和 2020 年、2021 年和 2022 年的增长率分别为 1%、2% 和 3%,那么 2022 年的预期销售额为 x *(1+1 %) * (1+2%) * (1+3%)。)

所有计算都应在 PowerPivot 中进行,并带有度量。到目前为止,我能够获得 2019 年的销售数据作为每年计算的基础:

VAR Sales2019 =
          CALCULATE(SUM(LUT_Sales19[Net_Sales]), ALL(LUT_date_year[Year]))

我也可以获得复合增长率:

VAR CumGrowth =
          CALCULATE(PRODUCTX(I_Growth, 1+I_Growth[Growth]),
             FILTER (ALL ( LUT_date_year ) ,LUT_date_year[Year] +1<= MAX ( LUT_date_year[Year])))

生成的数据透视表对于类别是正确的,但除 2019 年之外的每一年,集群的总和和总计都是关闭的。这是我使用的衡量标准:

IF(MAX(LUT_date_year[Year])=2019,
   Sales2019, 
   CALCULATE(SUMX(LUT_Sales19, LUT_Sales19[Net_Sales]*CumGrowth), ALL(LUT_date_year[Year]))
   )

我想,使用 SUMX 可以解决问题,但它仍然存在,而且我的想法已经不多了。

我错过了什么?

提前感谢您的帮助。

标签: daxpowerpivot

解决方案


经过一些研究,这篇文章帮助我理解了这个问题: https ://community.powerbi.com/t5/Desktop/DAX-sum-the-measure-values-in-total-and-Not-the-calculated/td- p/740509

事实证明,我需要两个额外的措施:一个是对类别的 VALUES 求和以正确计算集群,另一个是通过对集群的 VALUES 求和来获得总计。第三个度量具有类别、集群和总计的正确值。

因此,要计算类别的值:

Sales_CAT:=VAR Sales2019 =
          CALCULATE(SUM(LUT_Sales19[Net_Sales]),ALL(LUT_date_year[Year]))

VAR CumGrowth = CALCULATE(PRODUCTX(I_Growth ,1+I_Growth[Growth]) , FILTER (ALL (LUT_date_year) ,LUT_date_year[Year] +1<= MAX (LUT_date_year[Year]))) RETURN

IF(MAX(LUT_date_year[Year])=2019 , Sales2019 , Sales2019 * CumGrowth )

然后得到每个集群的总和:

Sales_Cluster:=SUMX(VALUES(LUT_CAT_Cluster[Categories]), LUT_Sales19[Sales_CAT])

最后获取类别、集群和总计的值:

Sales_GrandTotal:=SUMX(VALUES('LUT_Countries'[Country_ID]), LUT_Sales19[Sales_Cluster])

在数据透视表中,我必须使用 Sales_GrandTotal 度量,一切都很好。


推荐阅读