许多刚开始使用DAX的小伙伴在使用LASTDATE搜索某个时间段内的最后日期。或者他们使用NEXTDAY检索给定日期之后的日期。尽管这些函数可以实现它们所承诺的功能,但它们并不打算在简单的表达式中使用。相反,它们是设计用于时间智能计算的表函数。错误地使用它们会导致代码效率低下。此外,以未设计的方式使用这些功能是一个明显的信号,表明开发人员仍未掌握DAX的某些细节。
在本文中,我们将详细介绍该主题,以便了解这些时间智能功能的作用。我们还想了解在日期上将它们与简单的数学混淆如此容易的原因。我们想通过例子来详细阐述这个话题。因此,我们从无聊的理论开始,而不是从一个计算开始,尽管这种计算工作得很好,但它本质上是错误的。
计算给定选择中包含的天数,并生成如下所示的报告。
计算DaysInPeriod很简单:天数是时间段中第一个日期和最后一个日期之间的差。DAX提供了两个功能:FIRSTDATE和LASTDATE,这似乎是完美的候选者:
Days in period :=INT ( LASTDATE ( 'Date'[Date] ) - FIRSTDATE ( 'Date'[Date] ) )
这项措施可以正常工作并产生正确的结果。因此,我们很高兴!对