dax - 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 可以解决问题,但它仍然存在,而且我的想法已经不多了。
我错过了什么?
提前感谢您的帮助。
解决方案
经过一些研究,这篇文章帮助我理解了这个问题: 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 度量,一切都很好。
推荐阅读
- angular - 角度参数仅适用于子文件夹,不适用于根级别
- node.js - 如何使用 sequelize 在多个表中使用多个外键?
- maven - 如何在不使用“硬”依赖项的情况下在程序集中包含另一个模块的构建输出?
- thruk - 如何在 thruk api 调用中转义/在服务名称中
- html - 如何内联三个重叠的文本元素?
- ruby-on-rails - 使用原始电子邮件源测试操作邮箱控制器
- python - 如果列表具有所有值,则如何返回 None 否则以有效的方式返回列表中的真值
- javascript - JavaScript 错误 - 无法设置未定义的属性“textDecoration”
- java - 有关从生产 Spring Web 控制器到系统级 HTTP 测试的 IntelliJ 可导航引用的方法的建议?
- c++ - 为什么运行 hello world 会在 vs 代码中给我错误?