SAMEPERIODLASTYEAR

适用于:计算列计算表度量值视觉计算

注意

不建议在视觉对象计算中使用此函数,因为它可能会返回无意义的结果。

对于日期列输入,返回一个表,该表包含一列日期从当前上下文中指定 dates 列中的日期移回一年的时间。

对于日历输入,返回一个表,该表根据日历从当前上下文中的日期移回一年。 该表包含所有主标记列和所有时间相关列。

语法

SAMEPERIODLASTYEAR(<dates> or <calendar>)

parameters

术语 定义
dates or calendar 包含日期或日历引用的列

返回值

对于日期列输入,返回日期值的单列表。
对于日历输入,返回包含所有主标记列和所有时间相关列的表。

备注

  • dates 参数可以是以下任一参数:

    • 对日期/时间列的引用,
    • 返回日期/时间值的单个列的表表达式,
    • 一个布尔表达式,用于定义日期/时间值的单列表。
  • 主题 CALCULATE介绍了对布尔表达式的约束。

  • 返回的日期和等效公式 DATEADD(dates, -1, year) 返回的日期相同

  • 在计算列或行级别安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。

示例

以下示例公式创建一个度量值,用于计算经销商销售额的上一年销售额。

= CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), SAMEPERIODLASTYEAR(DateTime[DateKey]))

特殊行为

当所选内容包括过去两天的月份时,SAMEPERIODLASTYEAR 将使用“扩展”语义,并将包含到月底的天数。 例如,当 2009 年 2 月 27 日和 28 日包含在所选内容中时,SAMEPERIODLASTYEAR 将在 2008 年 2 月 27 日至 29 日返回。

仅当选定内容包含过去两天的月份时,才会发生此行为。 如果仅选择了 2 月 27 日,它将转到 2 月 27 日。

= SAMEPERIODLASTYEAR(DateTime[DateKey])

基于日历的时间智能示例

以下示例公式创建一个度量值,用于计算经销商销售额的上一年销售额。

= CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), SAMEPERIODLASTYEAR(FiscalCalendar))

经典时间智能和日历时间智能之间的行为差异

某些方案在比较经典和日历时间智能时可能会产生不同的结果。 例如,在农历年份中,SamePeriodLastYear 将在日期粒度上产生不同的结果。 在基于日历的时间智能中,2008年2月29日改回一年的结果是2007年3月1日,因为它被视为今年的第60天。 在经典时间智能中,同一班次返回 2007 年 2 月 28 日。 解决方法是使用 DATEADD(日历, -<年>、月数)。 例如,如果一年在日历中具有 13 个月,请使用 DATEADD(Calendar, -13, month)。 这种方法将逐月转移,因此 2008 年 2 月将转到 2007 年 2 月。

时间智能函数日期和时间函数 PREVIOUSYEARPARALLELPERIOD