计算同比环比增长

您所在的位置:网站首页 计算销售额同比增长列的内容(同比增长=本月销售额) 计算同比环比增长

计算同比环比增长

2024-07-17 16:42| 来源: 网络整理| 查看: 265

 点击下方,关注我们

关于这个模式

一个常见的需求是将一个时间段与前一年、前一季度或前一个月的相同时间段进行比较。最后一个月/季度/年可能是不完整的; 因此为了实现公平的比较,应该考虑一个相同的时间段进行比较。出于这个原因,正如控制将来日期的显示这一章节描述的那样,本章节中展示的计算使用了 Date [DateWithSales] 计算列。

同比增长

同比(Year-over-Year 或 YOY)是将本期和去年同期进行比较。在这个案例中,Sales 表有数据的最晚日期是 2009/08/15。因此,Sales PY 度量值显示的和 2008 年相关的数字只考虑了 2008/08/15 之前的交易。图5显示,2008年8月的销售额(Sales Amount)为721,560.95,而2009年8月的去年同期销售额(Sales PY )为296,529.51,因为度量值仅考虑了直到 2008/08/15 之前的销售。

图5  对于2009年8月(行 08 2009),Sales PY 度量值显示的是2008年8月1-15日之间的销售额,因为在 2009/08/15 之后没有数据。

为了确保在本期与上期之间比较的时间段相同,Sales PY 度量值使用 DATEADD 并筛选 Date[DateWithSales] 计算列,以避免在最后一个交易日(2009/08/15) 之后的日期上计值。

Sales PY := CALCULATE ( [Sales Amount], CALCULATETABLE ( DATEADD ( 'Date'[Date], -1, YEAR ), -- 往前偏移一年 'Date'[DateWithSales] = TRUE -- 对最后一个交易日(2009/08/15)之前的时期 ))

Sales YOY :=VAR ValueCurrentPeriod = [Sales Amount]VAR ValuePreviousPeriod = [Sales PY]VAR Result = IF ( NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ), --仅当本期与去年同期同时有数据时 ValueCurrentPeriod - ValuePreviousPeriod --计算同比增长 ) --否则, 返回空值RETURN ResultSales YOY % :=DIVIDE ( [Sales YOY], [Sales PY])

也可以使用 SAMEPERIODLASTYEAR 编写 Sales PY 度量值。SAMEPERIODLASTYEAR 更容易阅读,但是性能上并没有差异。这是因为在 DAX 引擎内部,它被转换成了在前一个公式中使用的 DATEADD 。

Sales PY (2) := CALCULATE ( [Sales Amount], CALCULATETABLE ( SAMEPERIODLASTYEAR ( 'Date'[Date] ), 'Date'[DateWithSales] = TRUE ))

季度环比增长

季度环比(Quarter-over-Quarter 或 QOQ)是将本期和上季度同期进行比较。在这个案例中,Sales 表有数据的最晚日期是 2009/08/15,也就是2009年第三个季度的上半季度。因此,2009年8月的上季度同期(Sales PQ)(第三个季度的第二个月)显示的是直到 2009/05/15 为止的销售,也就是直到上个季度第二个月上半月的销售。图6显示:2009年5月的销售额(Sales Amount)为1,067,165.23,而2009年8月的上季度同期(Sales PQ)销售额因为仅计入了 2009/05/15 之前的销售,返回435,306.10。

图6  对于2009年8月(行 08 2009),Sales PQ 度量值显示的是2009年5月1-15日之间的销售额,这是因为在 2009/08/15 之后就没有数据了。

为了确保在本期与上期之间比较的时间段相同,Sales PQ 度量值使用 DATEADD 并筛选 Date[DateWithSales] 计算列。季度环比增长通过 Sales QOQ 度量值作为金额和 Sales QOQ % 度量值作为百分比计算。两个度量值都使用了 Sales PQ 度量值,以确保在同时期进行比较。

Sales PQ := CALCULATE ( [Sales Amount], CALCULATETABLE ( DATEADD ( 'Date'[Date], -1, QUARTER ), -- 往前偏移一个季度 'Date'[DateWithSales] = TRUE -- 对最后一个交易日(2009/08/15)之前的时期 ))Sales QOQ :=VAR ValueCurrentPeriod = [Sales Amount]VAR ValuePreviousPeriod = [Sales PQ]VAR Result = IF ( NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ), --仅当本期与上季度同期同时有数据时 ValueCurrentPeriod - ValuePreviousPeriod --计算季度环比增长 ) --否则, 返回空值RETURN ResultSales QOQ % :=DIVIDE ( [Sales QOQ], [Sales PQ])

月环比增长

月环比(Month-over-Month  或 MOM)是将本期和上月同期进行比较。在这个案例中,Sales 表有数据的最晚日期是 2009/08/15。因此,2009年8月的上月同期(Sales PM)只考虑2009年7月1-15日之间的销售,这样以来,它只返回了上月的对应区间。图7显示:2009年7月的销售额(Sales Amount)为1,068,396.58,而2009年8月的上月同期(Sales PM)销售额因为仅计入了 2009/07/15 之前的销售,返回 584,212.78。

图7  对于2009年8月(行 08 2009),Sales PM 度量值显示的是2009年7月1-15日之间的销售额,这是因为在 2009/08/15 之后就没有数据了。

为了确保在本期与上期之间比较的时间段相同,Sales PM 度量值使用 DATEADD 并筛选 Date[DateWithSales] 计算列。月环比增长通过 Sales MOM 度量值作为金额和 Sales MOM % 度量值作为百分比计算。两个度量值都使用了 Sales PM 度量值,以确保在同时期进行比较。

Sales PM := CALCULATE ( [Sales Amount], CALCULATETABLE ( DATEADD ( 'Date'[Date], -1, MONTH ), -- 往前偏移一个月 'Date'[DateWithSales] = TRUE -- 对最后一个交易日(2009/08/15)之前的时期 ))Sales MOM :=VAR ValueCurrentPeriod = [Sales Amount]VAR ValuePreviousPeriod = [Sales PM]VAR Result = IF ( NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ), --仅当本期与上月同期同时有数据时 ValueCurrentPeriod - ValuePreviousPeriod --计算月环比增长 ) --否则, 返回空值RETURN ResultSales MOM % :=DIVIDE ( [Sales MOM], [Sales PM])

下期预告: 计算周期间的增长,你将掌握如何编写基于用户选择的任意周期间的比较。

✎ 获取案例文件 

添加公众号,回复"同比环比计算",获得案例文件进行练习。

—END—

计算累计至今 | DAX 模式:关于时间的标准计算

Power BI | DAX 优化日期表的性能

DAX Patterns | 关于时间的标准计算 (2)

DAX Patterns | 关于时间的标准计算

“关注并加星,及时获得最新更新”

点亮【赞】+【在看】,让更多人看到吧



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3