手記
この関数は、意味のない結果を返す可能性があるため、視覚的な計算
日付列の入力の場合、指定した開始日で始まり、指定した終了日まで続く日付の列を含むテーブルを返します。
カレンダー入力の場合は、指定した開始日から始まり、指定した終了日まで続くテーブルを返します。 テーブルには、すべてのプライマリタグ付き列とすべての時間関連列が含まれています。
この関数は、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] ) )
)