基于日历的时间智能是否会改变自定义逻辑?

让我们看一下随着时间的推移计算移动平均值这篇文章基于日历的时间智能会改变自定义逻辑吗?首先出现在《走向数据科学》上。

来源:走向数据科学

简介

基于日历的时间智能,对自定义时间智能逻辑的需求已大幅减少。

现在,我们可以创建自定义日历来满足我们的时间智能计算需求。

您可能已经阅读过我关于高级时间智能的文章:

https://towardsdatascience.com/advanced-time-intelligence-in-dax-with-performance-in-mind/

不再需要大部分自定义逻辑。

但我们仍然存在必须进行自定义计算的情况,例如运行平均值。

前段时间,SQLBI写了一篇关于计算运行平均值的文章。

这篇文章使用了此处描述的相同原理,但方法略有不同。

让我们看看如何使用新日历计算三个月内的运行平均值。

使用经典时间智能

首先,我们使用标准公历和经典的时间智能日期表。

我使用了与下面参考部分链接的 SQLBI 文章中描述的类似方法。

按月运行平均值 =

// 1. 获取当前 Filter Context 的第一个和最后一个 Date

VAR MaxDate = MAX( '日期'[日期] )

// 2. 生成移动平均线所需的日期范围(三个月)

VAR 日期范围 =DATESINPERIOD( '日期'[日期],最大日期,-3,月)// 3. 生成一个按步骤 2 中生成的日期范围过滤的表// 该表仅包含三行VAR 每月销售额 =计算表(总结列('日期'[月键], "#Sales", [在线销售额合计]),日期范围)返回// 4. 计算步骤 3 中生成的表中三个值的平均值AVERAGEX(SalesByMonth, [#Sales])在 DAX Studio 中执行此措施时,我得到了预期结果:到目前为止,一切顺利。使用标准日历接下来,我创建了一个名为“Gregorian Calendar”的日历,并更改了代码以使用该日历。更改发生在调用 DATESINPERIOD() 函数时。正如预期的那样,结果是相同的: