Applies ToMicrosoft 365 专属 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

数据分析表达式 (DAX) 有 35 个函数,专用于聚合和比较随时间推移的数据。 与 DAX 的日期和时间函数不同,时间智能函数在 Excel 中并没有真正类似的功能。 这是因为时间智能函数处理不断变化的数据,具体取决于在数据透视表和 Power View 可视化效果中选择的上下文。

若要使用时间智能函数,需要在数据模型中包括一个日期表。 日期表必须包含一列,其中包含数据中包含的每年每天的一行。 此列被视为“日期”列 (但可以将其命名为你喜欢) 的任何名称。 许多时间智能函数需要日期列才能根据在报表中选择的字段进行计算。 例如,如果你有一个度量值,该度量值使用 CLOSINGBALANCEQTR 函数计算季度末余额,为了使 Power Pivot 知道季度结束时间,它必须引用日期表中的日期列,以了解季度开始和结束时间。 若要了解有关日期表的详细信息,请参阅 在 Excel 中的 Power Pivot 中了解和创建日期表

函数

返回单个日期的函数

此类别中的函数返回单个日期。 然后,可以将结果用作其他函数的参数。

此类别中的前两个函数返回当前上下文中Date_Column中的第一个或最后一个日期。 如果要查找具有特定类型的事务的第一个或最后一个日期,这可能很有用。 这些函数仅采用一个参数,即日期表中日期列的名称。

此类别中的接下来两个函数查找第一个或最后一个日期 (或任何其他列值,以及其中表达式具有非空值) 。 这最常用于库存等情况,其中你想要获取最后一个库存量,但你不知道上次清单的拍摄时间。

返回单个日期的另外六个函数是返回当前计算上下文中月份、季度或年份的第一个或最后一个日期的函数。

返回日期表的函数

有 16 个时间智能函数可返回日期表。 大多数情况下,这些函数将用作 CALCULATE 函数的 SetFilter 参数。 与 DAX 中的所有时间智能函数一样,每个函数都将日期列作为其参数之一。

此类别的前八个函数以当前上下文中的日期列开头。 例如,如果在数据透视表中使用度量值,则列标签或行标签上可能有一个月或一年。 净效果是筛选日期列以仅包含当前上下文的日期。 从当前上下文开始,这八个函数然后计算上一个 (或下一) 天、月、季或年,并返回单个列表形式的这些日期。 “previous”函数从当前上下文中的第一个日期向后工作,“next”函数从当前上下文中的最后一个日期向前移动。

此类别中接下来的四个函数相似,但它们不会计算上一个 (或下一个) 期间,而是计算“本月至今” (、季度至今、本年度至今或上一年同期) 的日期集。 这些函数都使用当前上下文中的最后一个日期执行计算。 请注意,SAMEPERIODLASTYEAR 要求当前上下文包含一组连续的日期。 如果当前上下文不是连续的日期集,则 SAMEPERIODLASTYEAR 将返回错误。

此类别中的最后四个函数稍微复杂一点,功能也更强大。 这些函数用于从当前上下文中的日期集移动到一组新的日期。

  • DATEADD (Date_Column、Number_of_Intervals、间隔)

  • DATESBETWEEN (Date_Column、Start_Date、End_Date)

  • DATESINPERIOD (Date_Column、Start_Date、Number_of_Intervals、Interval)

DATESBETWEEN 计算指定开始日期和结束日期之间的日期集。 其余三个函数从当前上下文中移动一些时间间隔。 间隔可以是天、月、季度或年。 借助这些函数,可以轻松地将计算的时间间隔切换为以下任一项:

  • 返回两年

  • 返回一个月

  • 前进三个季度

  • 返回 14 天

  • 前进 28 天

在每种情况下,只需指定要移动的间隔以及这些间隔中的多少个。 正间隔将在时间上向前移动,而负间隔将在时间上返回。 间隔本身由 DAY、MONTH、QUARTER 或 YEAR 的关键字 (keyword) 指定。 这些关键字不是字符串,因此它们不应在引号中。

计算时间段内表达式的函数

此类函数在指定时间段内计算表达式。 可以使用 CALCULATE 和其他时间智能函数完成相同的操作。 例如,

= TOTALMTD (Expression,Date_Column [, SetFilter])

完全相同:

= CALCULATE (Expression,DATESMTD (Date_Column) [, SetFilter])

但是,如果这些时间智能函数非常适合需要解决的问题,则更容易使用这些函数:

  • TOTALMTD (Expression,Date_Column [, SetFilter])

  • TOTALQTD (Expression,Date_Column [, SetFilter])

  • TOTALYTD (Expression, Date_Column [, SetFilter] [,YE_Date]) *

此类别中还有一组函数,用于计算期初余额和期末余额。 应了解这些特定函数的某些概念。 首先,你可能认为很明显,任何时期的期初余额都与前一个周期的期末余额相同。 期末余额包括期末的所有数据,而期初余额不包括当前期间内的任何数据。

这些函数始终返回为特定时间点计算的表达式的值。 我们关心的时间点始终是日历周期中最后一个可能的日期值。 期初余额基于上一个周期的最后一个日期,而期末余额基于当前期间的最后一个日期。 当前周期始终由当前日期上下文中的最后一个日期确定。

其他资源

文章: 了解和创建 Excel 中的 Power Pivot 中的日期表

参考:Office.com 上的 DAX 函数参考

示例: 在 Excel 中使用 Microsoft PowerPivot 进行盈亏数据建模和分析

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。