Data Analysis Expressions (DAX) には、時系列でのデータの集計や比較に特化した 35 種類の関数が用意されています。 DAX の日付と時刻の関数とは異なり、タイム インテリジェンス関数については、Excel で類似の関数はありません。 この理由として、タイム インテリジェンス関数で操作する対象は、ピボットテーブルや Power View の視覚エフェクトで選択したコンテキストによって常に変化するデータであることが挙げられます。
タイム インテリジェンス関数を操作するには、データ モデルに日付テーブルを含める必要があります。 日付テーブルには、データに含まれる各年の毎日に対して 1 行の列を含める必要があります。 この列は Date 列と見なされます (ただし、任意の名前を付けることができます)。 多くのタイム インテリジェンス関数では、レポートのフィールドとして選択した日付に従って計算するために、日付列が必要です。 たとえば、CLOSINGBALANCEQTR 関数を使用して決算四半期末残高を計算するメジャーがある場合、Power Pivot で四半期の終わりが実際にいつであるかを知るには、四半期の開始と終了を知るために、日付テーブルの日付列を参照する必要があります。 日付テーブルの詳細については、「 Excel の Power Pivot で日付テーブルを理解して作成する」を参照してください。
関数
単一の日付を返す関数
このカテゴリに含まれる関数は、単一の日付を返します。 結果は、他の関数への引数として使用することができます。
このカテゴリに含まれる最初の 2 種類の関数はそれぞれ、現在のコンテキストで Date_Column の最初の日付または最後の日付を返します。 この関数は、特定の種類の取引を実施した最初の日付と最後の日付を取得する場合に役に立ちます。 これらの関数が取得する引数は、日付テーブルに含まれる日付列の名前 1 つだけです。
このカテゴリに含まれる次の 2 種類の関数はそれぞれ、式の値が空白値でない場合に、最初の日付または最後の日付 (もしくは、その他の列値) をそれぞれ取得します。 この関数がよく使われるのは、最新の在庫数量を知る必要があるときに、最新の在庫数量を取得した日付がわからないような状況です。
-
FIRSTNONBLANK (Date_Column,式)
-
LASTNONBLANK (Date_Column、式)
さらに、単一の日付を返す次の 6 種類の関数はそれぞれ、計算の現在のコンテキストで、月、四半期、または年の最初の日付または最後の日付を返します。
-
STARTOFMONTH (Date_Column)
-
STARTOFQUARTER (Date_Column)
-
STARTOFYEAR (Date_Column [,YE_Date])
-
ENDOFMONTH (Date_Column)
-
ENDOFQUARTER (Date_Column)
-
ENDOFYEAR (Date_Column [,YE_Date])
テーブル形式の日付を返す関数
テーブル形式の日付を返す 16 種類のタイム インテリジェンス関数があります。 ほとんどの場合、これらの関数は CALCULATE 関数の SetFilter 引数として使用されます。 DAX の他のタイム インテリジェンス関数と同様に、各関数は引数の 1 つとして日付列を取得します。
このカテゴリに含まれる最初の 8 つの関数は、現在のコンテキストで、日付列を起点にします。 たとえば、ピボットテーブルでメジャーを使用する場合、列ラベルまたは行ラベルには、月または年が含まれていると考えられます。 その効果として、日付列をフィルター処理すると、現在のコンテキストの日付だけを含む状態になります。 現在のコンテキストの日付を起点に、この 8 種類の関数は、前 (または次) の日、月、四半期、または年を計算して、その日付を単一列のテーブル形式で返します。 名前に "previous" を含む関数は現在のコンテキストで最初の日付から前の日付を返すのに対して、名前に "next" を含む関数は現在のコンテキストで最後の日付から後の日付を返します。
-
PREVIOUSDAY (Date_Column)
-
PREVIOUSMONTH (Date_Column)
-
PREVIOUSQUARTER (Date_Column)
-
PREVIOUSYEAR (Date_Column [,YE_Date])
-
NEXTDAY (Date_Column)
-
NEXTMONTH (Date_Column)
-
NEXTQUARTER (Date_Column)
-
NEXTYEAR (Date_Column [,YE_Date])
このカテゴリに含まれる次の 4 種類の関数も似ていますが、前 (または後) の期間を計算するのではなく、月、四半期、年、または前年の同じ期間の初めから現在のコンテキストの日付までを期間とする一連の日付を計算します。 これらの関数はすべて、現在のコンテキストで最後の日付を使用して計算します。 SAMEPERIODLASTYEAR では、現在のコンテキストが連続する日付を含む必要があることにご注意ください。 現在のコンテキストが連続する日付ではない場合、SAMEPERIODLASTYEAR はエラーを返します。
-
DATESMTD (Date_Column)
-
DATESQTD (Date_Column)
-
DATESYTD (Date_Column [,YE_Date])
-
SAMEPERIODLASTYEAR (Date_Column)
このカテゴリに含まれる最後の 4 種類の関数はもう少し複雑ですが、多機能です。 これらの関数は、現在のコンテキストに含まれる一連の日付から新しい一連の日付にシフトする場合に使用します。
-
DATEADD (Date_Column、Number_of_Intervals、間隔)
-
DATESBETWEEN (Date_Column、Start_Date、End_Date)
-
DATESINPERIOD (Date_Column、Start_Date、Number_of_Intervals、間隔)
-
PARALLELPERIOD (Date_Column、Number_of_Intervals、間隔)
DATESBETWEEN は、指定された開始日から終了日までの一連の日付を計算します。 残りの 3 種類の関数は、現在のコンテキストから一定の期間をシフトします。 この期間には、日、月、四半期、年などを指定できます。 これらの関数を使用すると、次のような条件による計算で、期間を簡単にシフトできるようになります。
-
2 年前に戻る
-
1 か月前に戻る
-
3 四半期後に進む
-
14 日前に戻る
-
28 日後に進む
それぞれのケースでは、期間の種類と、シフトの量を指定するだけです。 期間に正の値を指定すると時系列で後に進み、負の値を指定すると時系列で前に戻ります。 期間自体は、DAY、MONTH、QUARTER、YEAR というキーワードで指定します。 これらのキーワードは文字列ではなく、引用符で囲む必要はありません。
期間で式を評価する関数
このカテゴリに含まれる関数は、指定された期間で式を評価します。 CALCULATE とその他のタイム インテリジェンス関数を使用しても、同じ処理を行うことができます。 たとえば、
= TOTALMTD (Expression, Date_Column [, SetFilter])
は、次のように置き換えられます。
= CALCULATE (Expression, DATESMTD (Date_Column)[, SetFilter])
ただし、解決する必要がある問題によっては、期間で式を評価する関数を使用した方が簡単です。
-
TOTALMTD (Expression, Date_Column [, SetFilter])
-
TOTALQTD (Expression, Date_Column [, SetFilter])
-
TOTALYTD (Expression, Date_Column [, SetFilter] [,YE_Date]) *
また、このカテゴリでは、開始と終了の残高を計算する関数のグループです。 これらの特定の関数で理解する必要がある特定の概念があります。 まず、明らかなように、任意の期間の期首残高は、前の期間の終値残高と同じです。 期末残高には、期間の終わりまでのすべてのデータが含まれますが、期首残高には現在の期間内のデータは含まれません。
これらの関数は、特定の時点で評価された式の値を常に返します。 気になる時点は、常にカレンダー期間内の最後に可能な日付値です。 期首残高は前の期間の最終日付に基づき、期末残高は現在の期間の最終日付に基づいています。 現在の期間は、常に現在の日付コンテキストの最後の日付によって決定されます。
-
OPENINGBALANCEMONTH (Expression, Date_Column [,SetFilter])
-
OPENINGBALANCEQUARTER Quarter (Expression, Date_Column [,SetFilter])
-
OPENINGBALANCEYEAR (Expression, Date_Column [,SetFilter] [,YE_Date])
-
CLOSINGBALANCEMONTH (式, Date_Column [,SetFilter])
-
CLOSINGBALANCEQUARTER (Expression, Date_Column [,SetFilter])
-
CLOSINGBALANCEYEAR (Expression, Date_Column [,SetFilter] [,YE_Date])
追加情報
記事: Power Pivot in Excel の日付テーブルとその作成方法について
リファレンス: Office.com の DAX 関数リファレンス