Power BI Desktop「タイムインテリジェンス関数」練習メモ1

DAX サンプルモデル

「DAX サンプル」と検索すると、「DAX サンプル モデル」というページが見つかります。
そのページから「GitHub」にある「AdventureWorks Sales.xlsx」に辿り着けます。

DAX サンプル モデル - DAX
参照記事をサポートするための DAX サンプル モデルです。

このデータを使い、「DAX」(Data Analysis Expressions)に用意されている「タイムインテリジェンス関数」の練習を初めました。

タイム インテリジェンス関数 (DAX) - DAX
詳細については、以下をご覧ください。タイム インテリジェンス関数

CLOSINGBALANCEMONTH

日付情報を含むテーブルから、月末の値のみを取り出せます。

構文・戻り値
  • CLOSINGBALANCEMONTH(<expression>,<dates>[,<filter>])
  • 月の末日に評価される式を表すスカラー値
CLOSINGBALANCEMONTH 関数 (DAX) - DAX
詳細については、以下をご覧ください。CLOSINGBALANCEMONTH
Power BI Desktop使用例(月末値抽出)
f_CLOSINGBALANCEMONTH = 
CLOSINGBALANCEMONTH(SUM(Sales[Sales Amount]), ('Date'[Date]))

この式(メジャー)の場合、月末の売上値を返します。
このため、表示される日付も月末の値となります。

CLOSINGBALANCEQUARTER

「CLOSINGBALANCEMONTH」の四半期です。
日付情報を含むテーブルから、四半期末の値のみを取り出せます。

構文・戻り値
  • CLOSINGBALANCEQUARTER(<expression>,<dates>[,<filter>])
  • 四半期の最後の日付で評価された式を表すスカラー値
CLOSINGBALANCEQUARTER 関数 (DAX) - DAX
詳細については、以下をご覧ください。CLOSINGBALANCEQUARTER
Power BI Desktop使用例(四半期末日の値抽出)
f_CLOSINGBALANCEQUARTER = 
CLOSINGBALANCEQUARTER(SUM(Sales[Sales Amount]), 'Date'[Date])

今回のメジャーは四半期末日の値を返します。
このため、表示される日付も四半期末日の値となります。

CLOSINGBALANCEYEAR

この関数のシリーズの最後は年度版です。

構文・戻り値
  • CLOSINGBALANCEYEAR(<expression>,<dates>[,<filter>][,<year_end_date>])
  • 年度末日に評価される式を表すスカラー値
CLOSINGBALANCEYEAR 関数 (DAX) - DAX
詳細については、以下をご覧ください。CLOSINGBALANCEYEAR
Power BI Desktop使用例(年度末の値抽出)
f_CLOSINGBALANCEYEAR = 
CLOSINGBALANCEYEAR(SUM(Sales[Sales Amount]), 'Date'[Date])

年度末日の値を返すメジャーになっています。
表示される日付も年度末日の値となります。

DATEADD

指定された間隔数だけ時間をシフトしたます。
x年やx月、x日単位での日付をずらすこと(足し引き)ができます。

構文・戻り値
  • DATEADD(<dates>,<number_of_intervals>,<interval>)
  • 日付値の単一列を含むテーブル
DATEADD 関数 (DAX) - DAX
詳細については、以下をご覧ください。DATEADD
Power BI Desktop使用例(1年前に移動)
f_DATEADD_列 = 
DATEADD('Date'[Date], -1, YEAR)

このメジャー式では「-1, YEAR」で、1年前の日付に移動します。
元の日付列と並べると、1年前の日付の値を返していることがわかります。

DATESBETWEEN

指定した開始日から終了日までのテーブルを返します。
ある期間の合計値や平均値を算出する際に使えます。

構文・戻り値
  • DATESBETWEEN(<dates>, <start_date>, <end_date>)
  • 日付値のテーブル
DATESBETWEEN 関数 (DAX) - DAX
詳細については、以下をご覧ください。DATESBETWEEN
Power BI Desktop使用例1(指定期間)

例えば日付テーブルを作成する場合、「データビュー」 → 「新しいテーブル」から作れます。

f_DATESBETWEEN = 
DATESBETWEEN('Date'[Date], MIN('Date'[Date]), MAX('Date'[Date]))

元の日付テーブルの最小値と最大値の範囲の日付テーブルを作成しています。
(最小値と最大値なので、元の日付テーブルのDate列と同じ内容)

Power BI Desktop使用例2(指定期間の平均値)

メジャーを使った計算式の例です。
指定した期間の売上(Sales Amount)の平均値を算出しています。

f2_DATEBITWEEN = CALCULATE(
   AVERAGE(Sales[Sales Amount]), 
   DATESBETWEEN('Date'[Date], MIN('Date'[Date]), MAX('Date'[Date])
   ))

「スコアカード」で平均値を表示しています。
右側は、「Sales Amount」の集計方法を「平均」にした結果です。
「DATESBETWEEN」を使った値と同じになることを確認しました。

DATESINPERIOD

「DATESBETWEEN」同様、期間を指定する関数です。
「DATESINPERIOD」の場合、開始日から「x日、x月、x年」と間隔を自由に設定できます。

構文・戻り値
  • DATESINPERIOD(<dates>, <start_date>, <number_of_intervals>, <interval>)
  • 日付値のテーブル
DATESINPERIOD 関数 (DAX) - DAX
詳細については、以下をご覧ください。DATESINPERIOD
Power BI Desktop使用例1(1年前までの期間)

上記の「DATESBETWEEN」同様にテーブルを作成してみます。

ft_DATESINPERIOD = 
DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -1, YEAR)

もとデータの日付の最大値が「2021/6/30」なので、「1年前 = MAX(‘Date'[Date]), -1, YEAR」の「2021/7/1」から始まるテーブルが作成されます。

Power BI Desktop使用例2(1年間の累計)

売上(Sales Amount)の累計式(メジャー)の例です。

f_DATESINPERIOD = 
CALCULATE(
    SUM(Sales[Sales Amount]),
    DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -1, YEAR
))

「2020年」に限定しているので、「2020/1/1」より前の期間は対象外になります。
このため、「2020/1/1」は「2020/1/1」のみの集計、「2020/1/2」は「2020/1/1から1/2の合計値」と集計しています。
カードで表示されている数字は指定期間中の売上(Sales Amount)の合計値。確認用です。

Power BI Desktop使用例3(DATESBETWEENとの比較)

「DATESBETWEEN」を使っても同様の計算ができます。
BLANK()」は空白を返す関数です。
ゼロを返す関数でもあるらしく、「ゼロからMAXの範囲」を集計してくれています。
先ほどの「DATESINPERIOD」を使ったメジャーと同じ結果になります。

f3_DATEBITWEEN = 
CALCULATE(
    SUM(Sales[Sales Amount]), 
    DATESBETWEEN('Date'[Date], BLANK(), MAX('Date'[Date])
))
Power BI Desktop使用例4(7日間隔の合計)

7, DAY」と7日間隔で集計するメジャーです。

f2_DATESINPERIOD = 
CALCULATE(
    SUM(Sales[Sales Amount]),
    DATESINPERIOD('Date'[Date], MIN('Date'[Date]), 7, DAY
))

右の表では、7日間隔で合計値を算出しています。
2017/7/1が最初の日付なので、「2017/7/1」は「2017/7/1」のみの集計、「2017/7/2」は「2017/7/1から1/2の合計値」、そして「2017/7/7」が7/1から7日間の合計。
これで1サイクル終了です。
「2017/7/8」は、7/2から7/8までの7日間ぼ集計となります。
右の表では7/1からの7日間の合計値が左の表と同じ値になることを確認しています。

タイトルとURLをコピーしました