DATESBETWEEN

適用対象: 計算列計算テーブルメジャービジュアル計算

手記

この関数は、意味のない結果を返す可能性があるため、視覚的な計算 使用することはお勧めしません。

日付列の入力の場合、指定した開始日で始まり、指定した終了日まで続く日付の列を含むテーブルを返します。

カレンダー入力の場合は、指定した開始日から始まり、指定した終了日まで続くテーブルを返します。 テーブルには、すべてのプライマリタグ付き列とすべての時間関連列が含まれています。

この関数は、CALCULATE 関数にフィルターとして渡す場合に適しています。 これを使用して、カスタム日付範囲で式をフィルター処理します。

手記

日、月、四半期、年などの標準の日付間隔を使用している場合は、より適した DATESINPERIOD 関数を使用します。

構文

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

パラメーター

用語 定義
dates or calendar 日付またはカレンダー参照を含む列
StartDate 日付/日式。 カレンダー構文を使用する場合は、Day カテゴリにタグ付けされたプライマリ列と同じデータ型を使用します。
EndDate 日付/日式。 カレンダー構文を使用する場合は、Day カテゴリにタグ付けされたプライマリ列と同じデータ型を使用します。

戻り値

日付列入力の場合、日付値の単一列を含むテーブル。
カレンダー入力の場合、すべての主要なタグ付け列とすべての時間関連列を含むテーブル。

備考

  • 最も一般的なユース ケースでは、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 モデルのサンプルと共に使用できます。 モデルを取得するには、サンプル モデル 参照してください。

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] ) )
)