Power Pivot in Excel のタイム インテリジェンス

Data Analysis Expressions (DAX) には、時系列でのデータの集計や比較に特化した 35 種類の関数が用意されています。DAX の日付と時刻の関数とは異なり、タイム インテリジェンス関数については、Excel で類似の関数はありません。この理由として、タイム インテリジェンス関数で操作する対象は、ピボットテーブルや Power View の視覚エフェクトで選択したコンテキストによって常に変化するデータであることが挙げられます。

タイム インテリジェンス関数を操作するには、日付テーブルをデータ モデルに追加する必要があります。日付テーブルは、データに含まれている各年のすべての日を 1 日 1 行の形式で記載した行を含む列を含んでいる必要があります。この列は、日付列として扱われます (ただし、列の名前は自由に付けることができます)。多くのタイム インテリジェンス関数では、レポートのフィールドとして選択した日付に基づいて計算するので、日付列が必要になります。たとえば、メジャーで CLOSINGBALANCEQTR 関数を使用して、四半期末の期末残高を計算するとします。この場合、Power Pivot に実際の四半期末の日付を認識させるため、日付テーブルの日付列を参照して、四半期の開始日と終了日を指定する必要があります。日付テーブルの詳細については、「PowerPivot in Excel の日付テーブルとその作成方法について」を参照してください。

関数

単一の日付を返す関数

このカテゴリに含まれる関数は、単一の日付を返します。結果は、他の関数への引数として使用することができます。

このカテゴリに含まれる最初の 2 種類の関数はそれぞれ、現在のコンテキストで Date_Column の最初の日付または最後の日付を返します。この関数は、特定の種類の取引を実施した最初の日付と最後の日付を取得する場合に役に立ちます。これらの関数が取得する引数は、日付テーブルに含まれる日付列の名前 1 つだけです。

このカテゴリに含まれる次の 2 種類の関数はそれぞれ、式の値が空白値でない場合に、最初の日付または最後の日付 (もしくは、その他の列値) をそれぞれ取得します。この関数がよく使われるのは、最新の在庫数量を知る必要があるときに、最新の在庫数量を取得した日付がわからないような状況です。

さらに、単一の日付を返す次の 6 種類の関数はそれぞれ、計算の現在のコンテキストで、月、四半期、または年の最初の日付または最後の日付を返します。

テーブル形式の日付を返す関数

テーブル形式の日付を返す 16 種類のタイム インテリジェンス関数があります。多くの場合、これらの関数は、CALCULATE 関数への SetFilter 引数として使われます。DAX の他のタイム インテリジェンス関数と同様に、各関数は引数の 1 つとして日付列を取得します。

このカテゴリに含まれる最初の 8 つの関数は、現在のコンテキストで、日付列を起点にします。たとえば、ピボットテーブルでメジャーを使用する場合、列ラベルまたは行ラベルには、月または年が含まれていると考えられます。その効果として、日付列をフィルター処理すると、現在のコンテキストの日付だけを含む状態になります。現在のコンテキストの日付を起点に、この 8 種類の関数は、前 (または次) の日、月、四半期、または年を計算して、その日付を単一列のテーブル形式で返します。名前に "previous" を含む関数は現在のコンテキストで最初の日付から前の日付を返すのに対して、名前に "next" を含む関数は現在のコンテキストで最後の日付から後の日付を返します。

このカテゴリに含まれる次の 4 種類の関数も似ていますが、前 (または後) の期間を計算するのではなく、月、四半期、年、または前年の同じ期間の初めから現在のコンテキストの日付までを期間とする一連の日付を計算します。これらの関数はすべて、現在のコンテキストで最後の日付を使用して計算します。SAMEPERIODLASTYEAR では、現在のコンテキストが連続する日付を含む必要があることにご注意ください。現在のコンテキストが連続する日付ではない場合、SAMEPERIODLASTYEAR はエラーを返します。

このカテゴリに含まれる最後の 4 種類の関数はもう少し複雑ですが、多機能です。これらの関数は、現在のコンテキストに含まれる一連の日付から新しい一連の日付にシフトする場合に使用します。

  • DATEADD (Date_Column, Number_of_Intervals, Interval)

  • DATESBETWEEN (Date_Column, Start_Date, End_Date)

  • DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Interval)

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

このカテゴリには、期首残高と期末残高を計算する関数のグループも含まれています。これらの特定の関数については、その基本となる考え方を理解しておく必要があります。まず当然のことながら、どの期間でも期首残高は前期の期末残高と一致します。期末残高には、その期間の期末時点のあらゆるデータが反映されています。これに対して、期首残高には、その期間のデータはまったく反映されていません。

これらの関数は常に、特定の時点で評価された式の値を返します。常に注意が必要な時点は、カレンダー期間で最後の日付です。期首残高は、前期の最後の日付に基づいています。これに対して、期末残高は現在の期間の最後の日付に基づいています。現在の期間は常に、現在の日付のコンテキストで最後の日付に基づいて決まります。

追加情報

記事: Power Pivot in Excel の日付テーブルとその作成方法について

参照: Office.com の DAX 関数参照

サンプル: Excel での Microsoft PowerPivot による損益データ モデリングと分析 (英語)

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×