SamePeriodLastYear by Day

时间:2018-01-05 13:52:32

标签: excel formula powerbi dax

我希望计算SAMEPERIODLASTYEAR的销售额。我有一张表来查看过去几年的销售情况,并使用SAMEPERIODLASTYEAR函数我可以回顾整个去年1月的整体,但我想要的是将它完全拉到日期而不是去年当月底。

我的公式如下所示,例如去年1月全部。

Sales Last Year:=CALCULATE([Sum of Sales],SAMEPERIODLASTYEAR(Dates[Date]))

有没有办法只使用SAMEPERIODLASTYEAR函数而不是单独的每日计算?

1 个答案:

答案 0 :(得分:0)

我并不是说这是最好的(或唯一的)方法,但是如何:

Sales Last Year =
CALCULATE (
    [Sum of Sales],
    FILTER (
        SAMEPERIODLASTYEAR ( 'Dates'[Date] ),
        'Dates'[Date]
            < DATE ( YEAR ( TODAY () ) - 1, MONTH ( TODAY () ), DAY ( TODAY () ) )
    )
)

基本上,我在SAMEPERIODLASTYEAR子句周围添加了一个FILTER()语句,并将结果过滤到去年的当前日期之前。如果今天是2018年1月8日,这意味着2017年1月8日或之后的任何销售都将被过滤掉。

本质上,我采用当前日期(TODAY()),将其分解为其组成部分,从年份中减去1,然后使用DAX DATE()将其重建为日期值功能

我之所以这样做而不是使用DATEADD()减去一年的Excel风格,是因为DATEADD需要一个日期表作为输入,而TODAY()是一个日期。因此,您无法直接将TODAY()放入DATEADD()。

我没有使用TODAY(),而是可以使用一个度量来标识有数据的最新日期,而是调用它。这是同样的解决方案。

如果其他人有更好的方法,我会很好奇。这让我觉得这是一个人们必须经常遇到的常见问题。