PowerBI DAX度量值开发需求:基于Salesforce机会数据计算未来期间的加权收入总和
PowerBI DAX度量值开发需求:基于Salesforce机会数据计算未来期间的加权收入总和
我目前正在基于Salesforce的数据做收入预测,数据里每个Opportunity[Id]对应一个关闭日期,还有一个Opportunity[Monthly Weighted Revenue]月度加权收入值(如果用年度收入能让DAX代码更易读的话,年度收入数据也可以调用)。
模型中的数据
| Opportunity[Id] | Opportunity[close date] | Opportunity[Monthly Weighted Revenue] |
|---|---|---|
| A | 2024-09-20 | 10 |
| B | 2024-11-12 | 40 |
| C | 2024-10-24 | 20 |
注意:Opportunity[close date]与Calendar[Date]表中的日期字段关联
需求说明
需要将每个机会的月度加权收入,按日历期间(月份,格式如Jul'24;季度,格式如Q2'24)展开为列,仅当期间在机会关闭日期所在期间及之后时,该期间才计入对应机会的月度加权收入值,否则为0。
DAX实现方案
首先要确保你已经有一个标准的Calendar日期表,至少包含以下字段:
- Date:完整日期值
- MonthLabel:自定义格式的月份标签(如
Jul'24,可通过FORMAT(Date, "MMM''YY")生成) - QuarterLabel:自定义格式的季度标签(如
Q2'24,可通过FORMAT(Date, "\QQ''YY")生成) - YearMonth:用于月份排序的数字字段(如202407,通过
YEAR(Date)*100 + MONTH(Date)生成) - YearQuarter:用于季度排序的数字字段(如20242,通过
YEAR(Date)*10 + CEILING(MONTH(Date)/3,1)生成)
方案1:全局期间收入总和度量值
如果需要计算整个数据集在指定期间的总收入,使用这个度量值:
全局月度加权收入总和 = VAR 当前期间最后一天 = MAX(Calendar[Date]) VAR 符合条件的机会 = FILTER( ALL(Opportunity), Opportunity[close date] <= 当前期间最后一天 ) RETURN SUMX(符合条件的机会, Opportunity[Monthly Weighted Revenue])
使用方法:在矩阵可视化中,列区域放入Calendar的MonthLabel和QuarterLabel,值区域放入这个度量值,即可得到每个期间的总收入。
方案2:单机会期间收入度量值
如果需要按每个机会展开,查看单个机会在各期间的收入贡献,使用这个度量值:
单机会期间收入 = VAR 当前机会关闭日期 = MAX(Opportunity[close date]) VAR 当前期间最后一天 = MAX(Calendar[Date]) RETURN IF( 当前机会关闭日期 <= 当前期间最后一天, MAX(Opportunity[Monthly Weighted Revenue]), 0 )
使用方法:矩阵的行区域放入Opportunity[Id],列区域放入Calendar的MonthLabel和QuarterLabel,值区域放入这个度量值,就能得到和需求完全匹配的输出格式。比如:
- 机会A的关闭日期是2024-09-20,所以
Sep'24及之后的月份/季度列会显示10,之前的Jul'24、Aug'24、Q2'24都显示0 - 机会B的关闭日期是2024-11-12,所以
Nov'24及之后的期间显示40,之前的所有期间显示0 - 机会C的关闭日期是2024-10-24,所以
Oct'24及之后的期间显示20,之前的期间显示0
如果需要对季度列做特殊样式(比如加粗),可以在矩阵的列工具中设置条件格式,基于Calendar表的字段判断当前列是月份还是季度,再应用格式。
备注:内容来源于stack exchange,提问作者Carlos
相关产品推荐
相关产品推荐

