DATESINPERIOD
注意
不建议在视觉对象计算中使用此函数,因为它可能会返回无意义的结果。
返回一个表,此表包含一列日期,日期以指定的开始日期开始,并按照指定的日期间隔一直持续到指定的数字。
此函数适合作为筛选器传递给 CALCULATE 函数。 使用该函数可以按标准日期间隔(如日、月、季度或年)筛选表达式。
语法
DATESINPERIOD(<dates>, <start_date>, <number_of_intervals>, <interval>)
parameters
术语 | 定义 |
---|---|
日期 | 日期列。 |
start_date | 日期表达式。 |
number_of_intervals | 一个整数,指定要添加到 dates 或从 dates 中减去的时间间隔数。 |
interval | 日期偏移的间隔。 interval 的值可以是以下值之一:DAY 、MONTH 、QUARTER 和 YEAR |
返回值
包含单列日期值的表。
备注
在最常见的用例中,日期是对已标记的日期表的日期列的引用。
如果为 number_of_intervals 指定了正数,则日期向未来推移;如果指定了负数,则日期向过去推移。
interval 参数是必需的。 有效值为
DAY
、MONTH
、QUARTER
和YEAR
。 由于这是一个枚举,值不作为字符串传入。 因此不要将它们放在引号内。返回的表只能包含存储在“日期”列中的日期。 因此例如,如果日期列从 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 日开始。