Categories: Power BI

Power BI道場 累計の作り方。お手軽な方法と応用の2つを紹介

この記事で解決できる疑問

  • 累計のメジャーはどうやって作るの?
  • 累計を年度始めの4月でリセットする方法は?
  • 累計を年でリセットしないようにできるの?

Power BIでの累計のデータ作成方法について解説します。

下のグラフの折れ線が累計データです。
4月から金額を積み上げて、3月末にリセットしています。

知っていれば簡単なのですが知らないとすごく苦労します。
累積はよく使いますので参考にしてください。

筆者について

著書「Power BIの教科書」で、Power BIについて効率的に学べる本を出版。
情報システム部員で、業務に役に立つ使い方を中心に解説しています。

基本編 累計のメジャー作成

累計はクィックメジャーから作成できます。
それではさっそく累計を作成していきましょう。

【累計の作成手順
年度累計のメジャーを作成します

  1. ホームメニューからクイックメジャーをクリックします
  2. クィックメジャーのメニューで計算に年度累計を選択します
    年度累計を選ぶと1月1日から12月31日までを積み上げます
    四半期累計は1月から3ヶ月ごとに積み上げてリセットします
  3. 基準値と日付の項目を設定します
    基準値には積み上げる数字項目を設定します。
    日付は日付形式の項目を設定します。

作成した年度累計を線グラフで表示すると次のようになります。

作成した年度累計を12月末でデータがリセットされています。
多くの会社は4月が年度開始日ではないでしょうか?
年度末を変更する手順を紹介します。

【累計の年度開始日を4月に変更

年度末を3月31日に変更します

  1. 先程作成した累計項目のメジャーを選択します
  2. TOTALYTDの関数の第2引数に、”3/31″を追加します。
    第2引数は年度末を設定するパラメータです。デフォルトは12/31です。

以上で累計の項目作成ができました。

グラフを作成するときに一つ注意点があります。
軸の項目は、クィックメジャーを作成した「日付」と同じ項目を使用してください。

違う項目を使うとグラフに累計が表示されません。

応用編 累計の出し方を自分で制御したい

クィックメジャーで累計を作成するのが筆者としておすすめです。
ですが、自分の要望と合わないときがあると思います。

  • 年を超えた全データの累計をしたい
  • 日付の軸を自分で作成した日付テーブルを使いたい
    *棒グラフは日付が英語表記になるため
  • 複雑な条件式を指定したい

クィックメジャーで使っている関数は、累計専用の関数なので細かい指定はできません。
そのようなときのために、手動でDAXを作成する方法を紹介します。

【累計の関数を手動で作成する方法

  1. 新しいメジャーを選択します
  2. 累計の式を記入します
項目名 = CALCULATE(SUM(集計項目),FILTER(ALLSELECTED(テーブル名), 日付項目 <= MAX(日付項目)))

サンプル

累計金額 = CALCULATE(SUM('テーブル1'[金額]),FILTER(ALLSELECTED('テーブル1'), 'テーブル1'[年月] <= MAX('テーブル1'[年月]))

この累計を理解するにはDAXの考え方を知っている必要があります。
この式だけを見て理解するのは難しいでしょう。

私もいろいろ調べて式は他の方が提供されている式を見てわかったのですが、どうしてそのような結果になるのか理解できなくて3日間悩みました。

次に同じ内容をクエリの形に書き直してみました。
これで処理ステップを説明します。

累計 = 
VAR __currentDate = MAX(日付項目)
VAR __workTable   = FILTER(ALLSELECTED(テーブル名),日付項目 <= __currentDate )
RETURN CALCULATE(SUM('テーブル1'[金額]),__workTable)

1.__currentDate = MAX(日付項目)
 この式では計算対象とするレコードの日付を保存します
 2行目の2019/5/1のレコードの累計データを計算するとします。
 その場合2019/5/1が_currentDateに保存されます。

 MAXと書いていますがMINでも同じです。
 単純に「__currentDate=日付項目」とするとテーブルデータが保存されてしまいます。
 値のパラメータとして変換するために、MAXを利用しています。

2.__workTable = FILTER(ALLSELECTED(テーブル名),日付項目 <= __currentDate )
 この式では集計対象のテーブルを取得しています。
 累計なので、日付項目のデータが2019/5/1以下のレコードのテーブルを取るようにしています。

3.CALCULATE(SUM(‘テーブル1′[金額]),__workTable)
 集計した結果を累計として返します

以上で完了です。ステップ1がポイントです。
最大値をとりたいのでなく、現在のレコードの値を取るためにしかたなくMAXを使っています。

まとめ

累計はクィックメジャーからタイムインテリジェンスの関数を使って作成することができます。
複雑な計算をするときはDAX関数を使用して作成します。


Power BIの機能一覧の目次はPower BI記事のまとめから参照できます。

  • Power BIの概要
  • Power BIの機能の使い方
  • サンプルレポートのハンズオン

についてまとめてあります。

また「Power BIの教科書」の書籍では、Power BIを一から学べるようにまとめて書いています。
本からですと全体像がわかりやすいのと、学ぶ時間を大幅に節約できます。
効率的に勉強したい方はぜひこちらの本の紹介ページもご参照ください。

Katahira

Recent Posts

トランザクションテーブルの特徴を知ろう

この記事で解決できる疑問 トラ…

3年 ago

マスタテーブルの設計で注意すべき3点を紹介

この記事で解決できる疑問 マス…

3年 ago

Power BI道場 コンテンツ紹介

ここでは筆者が提供しているPo…

3年 ago

Power BI道場 ヒストグラムの作成。知っていれば簡単!!

この記事で解決できる疑問 ヒス…

3年 ago
Close Bitnami banner
Bitnami