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

「タイムインテリジェンス関数」の練習2回目です。
1回目はこちらです。

DATESMTD

現在までの月の日付の列を含むテーブルを返します
ただし、日付列が「現在」より前の日付までしか収録してない場合は、「現在に最も近い」値を返します。

構文・戻り値
  • DATESMTD(<dates>)
  • 日付値の単一列を含むテーブル
DATESMTD 関数 (DAX) - DAX
詳細については、以下をご覧ください。DATESMTD
Power BI Desktop使用例(最新月テーブル)

データビュー」 → 「新しいテーブル」で「DATESMTD」を使ったテーブルを作成してみます。

Sales_DATEMTD = DATESMTD('Sales'[t_Date])

Salesテーブルで定義しているDateテーブルが2020年6月までなので、範囲内の最新の月のみのテーブルを作成します。

※上記の「t_Date」列は、Salesテーブル上で「データビュー」→「新しい列」で「t_Date=RELATED(‘Date'[Date])」と記述し、作成しています。Salesテーブルに日付型の列がなかったので追加した、ということです。

Power BI Desktop使用例(累計)

以下のメジャーをSalesテーブル内に加えます。
DATESMTD」の対象期間内(6月)の「累計」を計算しています。

DATESMTD_Sales = 
   CALCULATE(SUM(Sales[Sales Amount]), DATESMTD('Sales'[t_Date]))

通常のDateテーブルと売上(Sales Amount)の表と並べると、「DATESMTD」の効果がわかりやすいと思いました。

例えば、左の表が、年を「2020」、月を「June」に設定した値です。
右が、上記で作成した「DATESMTD_Sales」の値(ビジュアルに「カード」を選択)です。
DATESMTD(‘Sales'[t_Date]))」という記述で、「現在までの(最新の)月の日付の列を含むテーブル」の期間を集計期間とします。
このため、2020年6月の合計値(累計値)となります。
左の表の合計値と同じになるので、集計が正しいことが確認できます。

DATESQTD

現在までの四半期の日付の列を含むテーブルを返します。

構文・戻り値
  • DATESQTD(<dates>)
  • 日付値の単一列を含むテーブル
Power BI Desktop使用例(最新四半期テーブル)

上記の「DATESMTD」同様に、「データビュー」 → 「新しいテーブル」で「DATESQ

TD」を使ったテーブルを作成してみます。

Sales_DATEQTD = DATEQMTD('Sales'[t_Date])

Salesテーブルで定義しているDateテーブルが2020年6月までなので、範囲内の最新の四半期のみのテーブルを作成します。
このため、2020年4月1日から始まります。

Power BI Desktop使用例(累計)

以下のメジャーで、上記期間の累計を集計できます。

DATESQTD_Sales = 
   CALCULATE(SUM(Sales[Sales Amount]), DATESQTD('Sales'[t_Date]))

左の表が、年を「2020」、四半期を「Qtr2」に設定した値です。
右が上記の「DATESQTD_Sales」の値を「カード」で表示しています。
表の合計値と同じ値になります。

DATESYTD

現在までの年の日付の列を含むテーブルを返します。

構文・戻り値
  • DATESYTD(<dates>)
  • 日付値の単一列を含むテーブル
Power BI Desktop使用例(最新年度テーブル)

上記の「DATESYTD」や「DATESQTD」同様に、「データビュー」 → 「新しいテーブル」で「DATESYTD」を使ったテーブルを作成してみます。

Sales_DATEYTD = DATEQYTD('Sales'[t_Date])

Salesテーブルで定義しているDateテーブルが2020年6月までなので、範囲内の最新のみのテーブルを作成します。
このため、2020年月1日から始まります。

Power BI Desktop使用例(累積)

以下のメジャーで、上記期間の累計を集計できます。

DATESYTD_Sales = 
   CALCULATE(SUM(Sales[Sales Amount]), DATESYTD('Sales'[t_Date]))

左の表が、年を「2020」に設定した値です。
右が上記の「DATESYTD_Sales」の値を「カード」で表示しています。
表の合計値と同じ値になります。

ENDOFMONTH

月の最後の日付を返します。

構文・戻り値
  • ENDOFMONTH(<dates>)
  • 単一列、単一行に日付値を含むテーブル
Power BI Desktop使用例(列の最新月の月末日)

データビュー」 → 「新しいテーブル」で「ENDOFMONTH」を使ったテーブルを作成してみます。

Sales_ENDOFMONTH = ENDOFMONTH('Sales'[t_Date])

「t_Date」の最後の値が「2023年6月15日」なので、その日付のみのテーブルが作成されます。

※この後「ENDOFQUARTER」(四半期末)、「ENDOFYEAR」(年度末)についても触れますが、「t_Date」の最後の値が「2023年6月15日」なので、同じ値を返します。
ENDOFMONTH」、「ENDOFQUARTER」、「ENDOFYEAR」の違いを確認するために、最後にそれぞれを表で並べています。

ENDOFQUARTER

四半期の最後の日付を返します。

構文・戻り値
  • ENDOFQUARTER(<dates>)
  • 単一列、単一行に日付値を含むテーブル
Power BI Desktop使用例(列の最新の四半期末日)

データビュー」 → 「新しいテーブル」で「ENDOFQUARTER」を使ったテーブルを作成してみます。

Sales_ENDOFQUARTER = ENDOFQUARTER('Sales'[t_Date])

ENDOFMONTH」と同じく「t_Date」の最後の値が「2023年6月15日」なので、その日付のみのテーブルが作成されます。

ENDOFYEAR

年の最後の日付を返します。

構文・戻り値
  • ENDOFYEAR(<dates>)
  • ENDOFYEAR(<dates> [,<year_end_date>])
  • 単一列、単一行に日付値を含むテーブル
Power BI Desktop使用例(列の最新の年度末日)

ENDOFMONTH」、「ENDOFQUARTER」と同様です
データビュー」 → 「新しいテーブル」で「ENDOFYEAR」を使ったテーブルを作成すると、これれまでと同じく「2023年6月15日」が返されます。

Sales_ENDOFMONTH = ENDOFMONTH('Sales'[t_Date])

ENDOFYEAR」の場合、「ENDOFYEAR(<dates> [,<year_end_date>])」という構文で年度末の日付を定義できるそうですが、

Sales_ENDOFYEAR2 = ENDOFYEAR('Sales'[t_Date], "01/31/2020")

と記述してもうまくいきませんでした。
記述方法を変えるなど何度かトライ&エラーしましたが、まだ確認中です。

ENDOFMONTH /QUARTER /YEARの比較

ENDOFMONTH」「ENDOFQUARTER」「ENDOFYEAR」はともに「2023年6月15日」を返すため、少々わかりにくい例となりました。
それぞれの違いを確認しやすいように、同じ表にまとめてみます。

Power BI Desktop使用例(各末日の売上)

ENDOFMONTH」「ENDOFQUARTER」「ENDOFYEAR」を使ったメジャーを用意します。
それぞれが返す期間の売上の集計を計算する式です。
上述の通り返す値は「末日」なので、(期間でなく)その日の売り上げになります。

ENDOFMONTH_Sales = 
   CALCULATE(SUM(Sales[Sales Amount]), ENDOFMONTH('Sales'[t_Date]))

ENDOFQUARTER_Sales = 
   CALCULATE(SUM(Sales[Sales Amount]), ENDOFQUARTER('Sales'[t_Date]))

ENDOFYEAR_Sales = 
   CALCULATE(SUM(Sales[Sales Amount]), ENDOFYEAR('Sales'[t_Date]))


上記メジャーの「ENDOFMONTH_Sales」「Sales_ENDOFQUARTER_Sales」「Sales_ENDOFYEAR_Sales」それぞれの列を並べます。
「Sales Amountの合計」の列の値は1ヶ月間の合計値です。
Sales_ENDOFMONTH」は(日にち列がないのでわかりにくいかもしれませんが)その月末日の売上(月の合計値ではありません)を表示しています。
同様に「ENDOFQUARTER」は四半期の最後の日にちの値、「ENDOFYEAR」は年の最後の日の値、となります。

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