DATESBETWEEN

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

注意

不建议将此函数用于 视觉计算,因为它可能会返回毫无意义的结果。

对于日期列输入,返回一个表,该表包含以指定开始日期开头的日期列,并一直持续到指定的结束日期。

对于日历输入,返回以指定开始日期开头的表,并一直持续到指定的结束日期。 该表包含所有主标记列和所有时间相关列。

此函数适合作为筛选器传递给 CALCULATE 函数。 使用它按自定义日期范围筛选表达式。

注意

如果使用标准日期间隔(如天、月、季度或年份),请使用更合适的 DATESINPERIOD 函数。

语法

DATESBETWEEN(<dates or calendar>, <StartDate>, <EndDate>)

参数

术语 定义
dates or calendar 包含日期或日历引用的列
StartDate 日期/天表达式。 如果使用日历语法,请使用与标记为“天”类别的主列相同的数据类型。
EndDate 日期/天表达式。 如果使用日历语法,请使用与标记为“天”类别的主列相同的数据类型。

返回值

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

言论

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

  • 如果是StartDate,则StartDate为列中最早的值dates。BLANK 对于日历,它是标记为日期的列中的第一个值。

  • 如果是EndDate,则EndDate为列中的最新值dates。BLANK 对于日历,它是标记为日期的列中的最后一个值。

  • 用作 StartDate 和 EndDate 的日期是包容性的。 因此,例如,如果 StartDate 值为 2019 年 7 月 1 日,则该日期将包含在返回的表中(前提是列中存在 dates 日期)。

  • 对于日期列输入,返回的表只能包含存储在列中的 Dates 日期。 例如,如果 Dates 列从 2017 年 7 月 1 日开始,并且 StartDate 值为 2016 年 7 月 1 日,则返回的表从 2017 年 7 月 1 日开始。

  • 对于日历输入,如果在标记的日期列中找不到输入日期,则会将其视为 BLANK,并使用第一个或最后一个值。

  • 对于日历输入,请使用与开始日期和结束日期标记的日期列相同的数据类型和格式。 例如,如果列使用格式 YYYY-Sn-Qn-Mnn-Wnn-Dnn(例如“2014-S2-Q4-M11-W45-D03”),则开始日期和结束日期必须遵循相同的格式(例如,“2015-S2-Q4-M11-W45-D03” )。 否则,行为是未定义的。

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

例

以下 Sales 表度量值定义使用 DATESBETWEEN 函数生成 最新 (LTD) 计算。 自时间开始以来,生存期表示一段时间的度量值的积累。

公式使用 MAX 函数。 此函数返回筛选器上下文中的最新日期。 因此,DATESBETWEEN 函数返回从最早日期开始到报告最新日期的日期表。

本文中的示例可用于示例 Adventure Works DW 2020 Power BI Desktop 模型。 若要获取模型,请参阅 DAX 示例模型。

Customers LTD =
CALCULATE (
    DISTINCTCOUNT ( Sales[CustomerKey] ),
    DATESBETWEEN ( 'Date'[Date], BLANK (), MAX ( 'Date'[Date] ) )
)

假设 日期 表中存储的最早日期是 2017 年 7 月 1 日。 因此,当报表按 2020 年 6 月筛选度量值时,DATESBETWEEN 函数返回日期范围从 2017 年 7 月 1 日到 2020 年 6 月 30 日。

基于日历的时间智能示例

以下 Sales 表度量值定义使用 DATESBETWEEN 函数生成 最新 (LTD) 计算。 自时间开始以来,生存期表示一段时间的度量值的积累。

公式使用 MAX 函数。 此函数返回筛选器上下文中的最大日期键。 因此,DATESBETWEEN 函数返回从最早日期开始到报告最新日期的日期表。 我们使用 DateKey 作为示例来显示“Day”类别可以用非日期类型的列进行标记。

Customers LTD =
CALCULATE (
    DISTINCTCOUNT ( Sales[CustomerKey] ),
    DATESBETWEEN ( FiscalCalendar, BLANK (), MAX ( 'Date'[DateKey] ) )
)