如何使用 DAX 创建 3 个月滚动平均值

How to create a rolling 3 month average with DAX

我有一个 table 如下所示:

Name    Date1        Date2         Age
Tim     2020/05/20   2020/05/25    5
Tim     2020/07/10   2020/07/17    7
Tim     2020/08/04   2020/08/10    6
Tim     2020/09/05   2020/09/12    7
Tim     2020/08/05   2020/08/17    12

如您所见,Age 是 Date1 和 Date2 之间的差异,我想创建一个 DAX 表达式来计算 Age 的滚动 3 个月平均值(其中 Date1 在过去 3 个月内)。

日期 1 链接到我的日历 table。

上述示例的预期结果为 8(第一个条目不会包含在结果中,因为它超过 3 个月)

有什么建议吗?

MOVAVG_3M = 
VAR __LAST_DATE = LASTDATE('Table'[Date1].[Date])
RETURN
    AVERAGEX(
        DATESBETWEEN(
            'Table'[Date1].[Date],
            DATEADD(__LAST_DATE, -3, MONTH), __LAST_DATE),
        CALCULATE(SUM('Table'[Age]))
    )

您也可以转到 Quick Measure - Rolling Average 并输入您的字段和数字。

始终考虑从 TODAY() 开始的最后 3 个月,您可以尝试以下措施以获得预期的输出。如果逻辑不同,您也可以调整开始和结束日期。以下将始终考虑过去 90 天,包括今天。

3_month_average = 

var start_3_month = TODAY() - 90
var end_3_month = TODAY()

RETURN
CALCULATE(
    AVERAGE(your_table_name[Age]),
    FILTER(
        ALL(your_table_name),
        your_table_name[Date1] >= start_3_month
            && your_table_name[Date1] <= end_3_month
    ) 
)