技巧分享 | 将前一年的完整数据与今年的不完整数据进行比较
本文翻译自国际Power BI大师Alberto Ferrari 的文章——《Previous year up to a certain date》。本文讲解了如何计算具体到去年某一天的值。当数据中的月份或者年份不完整时,这个技巧会非常有用。
如果需要将某个月与去年的同一月份进行比较的话。下面的计算提供了一个很好的起点:
Previous Year =
CALCULATE (
[Sales Amount],
SAMEPERIODLASTYEAR ( 'Date'[Date] )
)
通过这个度量,报表可以显示当年的销售额与去年销售额的对比。
不巧的是,这个计算并不完美。在年度级别,它将前一年的完整数据与今年的不完整数据进行比较,在本例中,今年的9月5日之后没有销售数据。
此外,这个问题不仅出现在年度级别,而且还出现在月度级别。实际上,在九月份,“Previous Year”度量值返回了去年整个九月的销售额。这种比较是不公平的,因为今年的九月份只有五天的销售额。
一个可行的解决方案是在日期表中创建一个计算列,以删除去年应忽略的日期。如果事实表中的最后日期是当月的9月5日,那么可以对去年9月5日之后的所有日期进行标记,以避免在计算中将它们考虑进来。
生成计算列的代码如下:
IsPast =
VAR LastSaleDate = MAX ( Sales[Order Date] )
VAR LastSaleDatePY = EDATE ( LastSaleDate, -12 )
RETURN
'Date'[Date] <= LastSaleDatePY
此代码将最后的销售日期存储在变量LastSaleDate中,然后使用EDATE函数将其移回一年(十二个月)。最后,它检查当前日期是否早于上一年的最后日期。下图显示了lsPast计算列,该列的值从2008年9月6日开始发生了改变。(在演示模型中,去年是2009年)
计算列就位之后,“Ajusted Previous Year”度量可以计算出“Previous Year”计算的变化。变量指定它只考虑前一年中IsPast列为True的日期。
Adjusted Previous Year =
CALCULATE(
[Sales Amount],
SAMEPERIODLASTYEAR ( 'Date'[Date] ),
'Date'[IsPast] = TRUE
)
下图显示了结果,它提供了对今年与去年的较为公平的比较。
原文链接:
https://www.sqlbi.com/articles/previous-year-up-to-a-certain-date/
-
PowerPivot工坊原创文章,转载请注明出处!
如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。
长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~
Power Pivot工坊
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)