按天计算的 SamePeriodLastYear

SamePeriodLastYear by Day

我正在计算 SAMEPERIODLASTYEAR 的销售额。我有一个 table 查看过去几年的销售额并使用 SAMEPERIODLASTYEAR 函数我可以将整个 1 月拉回,但我想要的是将其拉到日期准确而不是到去年当月的月底。

例如,我的以下公式在去年整个一月份都有效。

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

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

我并不是说这是最好的(或唯一的)方法,但是怎么样:

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 需要 table 个日期作为输入,而 TODAY() 是一个日期.因此,您不能将 TODAY() 直接放入 DATEADD()。

我可以不使用 TODAY(),而是使用一个度量来标识有数据的最近日期并调用它。都是一样的解决方法。

我很好奇其他人是否有更好的方法来做到这一点。这让我觉得这是人们必须 运行 经常遇到的一个常见问题。