滚动年份:实际和去年
Rolling Year: Actual And Last Year
我有以下字段:
- 年份
- 类别
- 创客
- 月份
- 月数
- 销量
- 销售额
- 日期
所以,我在破折号中有一个“月号”和“年”的过滤器:
我的目标是创建两个新度量;首先是需要总计 12 个月的 Rolling Year
,结束于用户 select 在提到的过滤器中的那一刻。例如,如果 y select Year
2021 和 Month
01。Rolling Year
需要对 selected 类别从 2020-02 到 2021- 的销售额求和01(这意味着自枢轴月以来始终为 12 个月)。
因为第二个是完全一样的,一个叫Rolling Last Year
的measure,也需要滚动求和,但是最后一个周期,以便比较。如果我有 2020-02 到 2021-01 期间,则以相同的示例为例。最后一期的Rolling Last Year
应该是2019-02到2020-01.
我尝试使用从 Microsoft 页面中提取的 DAX 代码但没有成功:
Rolling Year =
CALCULATE (
SUMX ( Table, Table[Sales] ),
FILTER (
ALL (Table[Date] ),
AND (
Table[Date] <= MAX ( Table[Date] ),
DATEADD ( Table[Date], 12, MONTH ) > MAX ( Table[Date] ))))
我与您分享我的基础摘录:
提前致谢!!!
根据 table 和您共享的代码,尚不清楚从何处应用日期过滤器。如果您还没有这样做,我强烈建议从您的销售 table 中删除 [Month] 和 [Month Number] 字段,并将它们保存在一个单独的日历 table 中,从那里应该有过滤器选择。然后,对您当前的公式进行简单调整即可解决问题:
Rolling Year =
CALCULATE (
SUMX ( Table, Table[Sales] ),
FILTER (
ALL ('Calendar'[Date] ),
AND (
Table[Date] <= MAX ( 'Calendar'[Date] ),
DATEADD ( 'Calendar'[Date], 12, MONTH ) > MAX ( 'Calendar'[Date] ))))
不过,您可以尝试使用此代码变体,稍微优化一下,以免每次都扫描整个销售 table:
Rolling Year =
VAR EndSelectedDate = MAX ( 'Calendar'[Date] )
VAR StartSelectedDate =
CALCULATE (
MAX ( 'Calendar'[Date] ),
ALL ( 'Calendar'[Year] ),
'Calendar'[Year]
= MAX ( 'Calendar'[Year] ) - 1
)
RETURN
CALCULATE (
SUM ( Table[Sales] ),
ALL ( 'Calendar' ),
'Calendar'[Date] <= EndSelectedDate,
'Calendar'[Date] > StartSelectedDate
)
我有以下字段:
- 年份
- 类别
- 创客
- 月份
- 月数
- 销量
- 销售额
- 日期
所以,我在破折号中有一个“月号”和“年”的过滤器:
我的目标是创建两个新度量;首先是需要总计 12 个月的 Rolling Year
,结束于用户 select 在提到的过滤器中的那一刻。例如,如果 y select Year
2021 和 Month
01。Rolling Year
需要对 selected 类别从 2020-02 到 2021- 的销售额求和01(这意味着自枢轴月以来始终为 12 个月)。
因为第二个是完全一样的,一个叫Rolling Last Year
的measure,也需要滚动求和,但是最后一个周期,以便比较。如果我有 2020-02 到 2021-01 期间,则以相同的示例为例。最后一期的Rolling Last Year
应该是2019-02到2020-01.
我尝试使用从 Microsoft 页面中提取的 DAX 代码但没有成功:
Rolling Year =
CALCULATE (
SUMX ( Table, Table[Sales] ),
FILTER (
ALL (Table[Date] ),
AND (
Table[Date] <= MAX ( Table[Date] ),
DATEADD ( Table[Date], 12, MONTH ) > MAX ( Table[Date] ))))
我与您分享我的基础摘录:
提前致谢!!!
根据 table 和您共享的代码,尚不清楚从何处应用日期过滤器。如果您还没有这样做,我强烈建议从您的销售 table 中删除 [Month] 和 [Month Number] 字段,并将它们保存在一个单独的日历 table 中,从那里应该有过滤器选择。然后,对您当前的公式进行简单调整即可解决问题:
Rolling Year =
CALCULATE (
SUMX ( Table, Table[Sales] ),
FILTER (
ALL ('Calendar'[Date] ),
AND (
Table[Date] <= MAX ( 'Calendar'[Date] ),
DATEADD ( 'Calendar'[Date], 12, MONTH ) > MAX ( 'Calendar'[Date] ))))
不过,您可以尝试使用此代码变体,稍微优化一下,以免每次都扫描整个销售 table:
Rolling Year =
VAR EndSelectedDate = MAX ( 'Calendar'[Date] )
VAR StartSelectedDate =
CALCULATE (
MAX ( 'Calendar'[Date] ),
ALL ( 'Calendar'[Year] ),
'Calendar'[Year]
= MAX ( 'Calendar'[Year] ) - 1
)
RETURN
CALCULATE (
SUM ( Table[Sales] ),
ALL ( 'Calendar' ),
'Calendar'[Date] <= EndSelectedDate,
'Calendar'[Date] > StartSelectedDate
)