DATESBETWEEN

適用於:匯出數據行計算數據表量值視覺計算

注意

不建議將此函式用於 視覺計算,因為它可能會傳回毫無意義的結果。

對於日期欄輸入,傳回一個表格,其中包含以指定開始日期開頭並持續到指定結束日期的日期欄。

對於行事曆輸入,傳回以指定開始日期開始並持續到指定結束日期為止的表格。 表格包含所有主要標記欄和所有時間相關欄。

此函式適合當做篩選傳遞至 CALCULATE 函式。 使用它依自定義日期範圍來篩選表達式。

注意

如果你使用的是標準日期間隔,如天、月、季度或年份,請使用更合適的 DATESINPERIOD 函數。

語法

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

參數

術語 定義
dates or calendar 包含日期或行事曆參照的資料行
StartDate 日期/日期運算式。 如果你使用日曆語法,請使用與標記為「日」類別的主要欄位相同的資料類型。
EndDate 日期/日期運算式。 如果你使用日曆語法,請使用與標記為「日」類別的主要欄位相同的資料類型。

傳回值

對於日期欄輸入,包含單欄日期值的資料表。
對於行事曆輸入,包含所有主要標記欄和所有時間相關欄的表格。

言論

  • 在最常見的使用案例中,dates 是標示日期數據表之日期數據行的參考。

  • 若 StartDate , BLANK則 StartDate 是該欄中最早的 dates 值。 對日曆來說,是標記為「日」的欄位中第一個值。

  • 若 EndDate , BLANK則 EndDate 是該欄中 dates 最新的值。 對日曆來說,是標記為日期欄位的最後一個值。

  • 作為 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] ) )
)

請考慮儲存在 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] ) )
)