技巧分享 | 将前一年的完整数据与今年的不完整数据进行比较

本文翻译自国际Power BI大师Alberto Ferrari 的文章——《Previous year up to a certain date》。本文讲解了如何计算具体到去年某一天的值。当数据中的月份或者年份不完整时,这个技巧会非常有用。

如果需要将某个月与去年的同一月份进行比较的话。下面的计算提供了一个很好的起点:

 Previous Year =
CALCULATE (
    [Sales Amount],
    SAMEPERIODLASTYEAR ( 'Date'[Date] )
)

通过这个度量,报表可以显示当年的销售额与去年销售额的对比。

file

不巧的是,这个计算并不完美。在年度级别,它将前一年的完整数据与今年的不完整数据进行比较,在本例中,今年的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年)
file

计算列就位之后,“Ajusted Previous Year”度量可以计算出“Previous Year”计算的变化。变量指定它只考虑前一年中IsPast列为True的日期。

 Adjusted Previous Year =
CALCULATE(
    [Sales Amount],
    SAMEPERIODLASTYEAR ( 'Date'[Date] ),
    'Date'[IsPast] = TRUE
)

下图显示了结果,它提供了对今年与去年的较为公平的比较。
file

原文链接:
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工坊