DAX:PRODUCTX 各类别结果的总和
DAX: Summing of PRODUCTX results over categories
我正在根据以下逻辑进行销售预测 table:
我们有 2019 年的完整销售 table,其中产品按集群分类,如果需要,在每个国家/地区的集群内的子类别中。 (LUT_Sales19)
对于每个国家和子类别,我们还有一个 Excel table 到 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])))
由此产生的数据透视表 table 对于类别是正确的,但除 2019 年以外的每一年,集群的总和和总计都是不正确的。
这是我使用的衡量标准:
IF(MAX(LUT_date_year[Year])=2019,
Sales2019,
CALCULATE(SUMX(LUT_Sales19, LUT_Sales19[Net_Sales]*CumGrowth), ALL(LUT_date_year[Year]))
)
我认为使用 SUMX 可以解决问题,但它仍然存在,我 运行 没有想法。
我错过了什么?
提前感谢您的帮助。
经过一番研究,这个 post 帮助我理解了这个问题:
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 =
计算(PRODUCTX(I_Growth ,1+I_Growth[增长]) ,
FILTER (ALL ( LUT_date_year ) ,LUT_date_year[年] +1<= MAX ( LUT_date_year[年])))
RETURN
IF(MAX(LUT_date_year[年])=2019 ,
销售 2019 年,
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])
在枢轴 table 中,我必须使用 Sales_GrandTotal 措施,一切都很好。
我正在根据以下逻辑进行销售预测 table: 我们有 2019 年的完整销售 table,其中产品按集群分类,如果需要,在每个国家/地区的集群内的子类别中。 (LUT_Sales19) 对于每个国家和子类别,我们还有一个 Excel table 到 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])))
由此产生的数据透视表 table 对于类别是正确的,但除 2019 年以外的每一年,集群的总和和总计都是不正确的。 这是我使用的衡量标准:
IF(MAX(LUT_date_year[Year])=2019,
Sales2019,
CALCULATE(SUMX(LUT_Sales19, LUT_Sales19[Net_Sales]*CumGrowth), ALL(LUT_date_year[Year]))
)
我认为使用 SUMX 可以解决问题,但它仍然存在,我 运行 没有想法。
我错过了什么?
提前感谢您的帮助。
经过一番研究,这个 post 帮助我理解了这个问题: 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 = 计算(PRODUCTX(I_Growth ,1+I_Growth[增长]) , FILTER (ALL ( LUT_date_year ) ,LUT_date_year[年] +1<= MAX ( LUT_date_year[年]))) RETURN
IF(MAX(LUT_date_year[年])=2019 , 销售 2019 年, 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])
在枢轴 table 中,我必须使用 Sales_GrandTotal 措施,一切都很好。