如何使用 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
)
)
我有一个 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
)
)