Excel 中的 Power Pivot 内的时间智能

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

为了使用时间智能功能,您需要在数据模型中包含一个日期表。 日期表必须包含一列,其中每年包含在数据中的每一列都有一行。 此列被视为 "日期" 列(虽然可以采用任何喜欢的命名方式)。 许多时间智能功能需要 "日期" 列,以便根据您在报表中选择字段的日期进行计算。 例如,如果你有一个用于通过使用 CLOSINGBALANCEQTR 函数计算年末期末余额的度量值,则为了使 Power Pivot 知道季度结束时间,它必须引用日期表中的 date 列,以了解季度开始和结束。 若要了解有关日期表的详细信息,请参阅在Excel 中的 Power Pivot 中了解和创建日期表

函数

返回单个日期的函数

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

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

此类别中的接下来两个函数查找第一个或最后一个日期(或任何其他列值),其中表达式具有非空值。 这通常用于库存的情况(如库存),您希望获取最后的库存金额,而您不知道上次库存的时间。

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

返回一个日期表的函数

有十六个时间智能函数可返回一个日期表。 通常情况下,这些函数将用作计算函数的 SetFilter 参数。 与 DAX 中的所有时间智能函数一样,每个函数都将一个日期列作为它的一个参数。

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

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

此类别中的最后四个函数稍有复杂,并且也更强大一些。 这些函数用于将当前上下文中的一组日期转换为一组新的日期。

  • DATEADD (Date_Column、Number_of_Intervals、间隔)

  • DATESBETWEEN (Date_Column,Start_Date,End_Date)

  • DATESINPERIOD (Date_Column、Start_Date、Number_of_Intervals、间隔)

DATESBETWEEN 计算指定的开始日期和结束日期之间的日期集。 剩余的三个函数将从当前上下文中移出一定数的时间间隔。 间隔可以是日、月、季度或年。 通过这些函数,可以轻松地通过以下任一操作来移动计算的时间间隔:

  • 返回两年

  • 返回一个月

  • 前进三个季度

  • 返回14天

  • 前进28天

在每种情况下,只需指定所需的时间间隔以及这些间隔的多少。 正时间间隔将在一段时间内向前移动,而负间隔将在同一时间内移动。 间隔本身由日、月、季度或年的关键字指定。 这些关键字不是字符串,因此它们不应位于引号中。

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

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

= TOTALMTD (Expression,Date_Column [,SetFilter])

与以下内容完全相同:

= 计算(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 函数参考

示例: Microsoft PowerPivot 在 Excel 中的损益数据建模和分析

注意:  本页面是自动翻译的,可能包含语法错误或不准确之处。 我们的目的是使此内容能对你有所帮助。 能否告知我们此信息是否有所帮助? 下面是该参考内容的英文版

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×