DATESINPERIOD

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

注意

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

返回一个表,此表包含一列日期,日期以指定的开始日期开始,并按照指定的日期间隔一直持续到指定的数字。

此函数适合作为筛选器传递给 CALCULATE 函数。 使用该函数可以按标准日期间隔(如日、月、季度或年)筛选表达式。

语法

DATESINPERIOD(<dates>, <start_date>, <number_of_intervals>, <interval>)

parameters

术语 定义
日期 日期列。
start_date 日期表达式。
number_of_intervals 一个整数,指定要添加到 dates 或从 dates 中减去的时间间隔数。
interval 日期偏移的间隔。 interval 的值可以是以下值之一:DAYMONTHQUARTERYEAR

返回值

包含单列日期值的表。

备注

  • 在最常见的用例中,日期是对已标记的日期表的日期列的引用。

  • 如果为 number_of_intervals 指定了正数,则日期向未来推移;如果指定了负数,则日期向过去推移。

  • interval 参数是必需的。 有效值为 DAYMONTHQUARTERYEAR。 由于这是一个枚举,值不作为字符串传入。 因此不要将它们放在引号内。

  • 返回的表只能包含存储在“日期”列中的日期。 因此例如,如果日期列从 2017 年 7 月 1 日开始,并且 start_date 值是 2016 年 7 月 1 日,则返回的表将从 2017 年 7 月 1 日开始 。

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

示例

下面的“销售”表度量值定义使用 DATESINPERIOD 函数来计算上一年 (PY) 的收入。

注意,该公式使用 MAX 函数。 此函数会返回筛选器上下文中的最新日期。 因此,DATESINPERIOD 函数返回从上一年的最新日期开始的日期表。

可将本文中的示例与 Adventure Works DW 2020 示例模型结合使用。 若要获取模型,请参阅 DAX 示例模型

Revenue PY =
CALCULATE(
    SUM(Sales[Sales Amount]),
    DATESINPERIOD(
        'Date'[Date],
        MAX('Date'[Date]),
        -1,
        YEAR
    )
)

假设报表按 2020 年 6 月进行筛选。 MAX 函数返回 2020 年 6 月 30 日。 然后,DATESINPERIOD 函数返回从 2019 年 7 月 1 日到 2020 年 6 月 30 日的日期范围。 这是一年的日期值,最近一年从 2020 年 6 月 30 日开始。

时间智能函数 (DAX)
日期和时间函数 (DAX)
DATESBETWEEN 函数 (DAX)