今回は、累計について解説します。
年間累計や月間累計などであれば用意された関数で簡単にいきますが、これまで全部の累計となると少し苦労しました。

1.データセット

今回は2種類のデータセットを用意します。

  • カレンダーテーブル
  • 累計をしたいデータを持ったテーブル

カレンダーテーブルは、こちらで作成したものと同様のものを利用します。

メインデータとなる累計をしたいデータは、以下のものを使います。
「User State」がactiveになった者の累計の推移を表現していきます。

2.リレーションシップの作成

データセットを準備したら、モデルビューにて以下の通りリレーションシップを作成します。
「State Change Date」とカレンダーテーブルの「Date」を紐づけます。

3.メジャーの作成

年を跨いでの累計を得るには、DAX関数を使用する必要があります。

新しいメジャーを作成し、以下のDAX関数を記述してください。
※「UserActivity」は累計をしたいデータが入っているテーブル名、「calendar」は1で用意したカレンダーテーブルの名前に置き換えてください。

利用者数累計 = CALCULATE(COUNT('UserActivity'[User State]),FILTER(ALLSELECTED('calendar'), 'calendar'[Date] <= MAX('calendar'[Date])))

4.ビジュアルの作成

今回は面グラフを利用します。
X軸に年を、Y軸に3で作成したメジャー「利用者数累計」を指定しています。

よく見ると、X軸の始まりが「(空白)」となっていますね。
これはcalendarテーブルに2020年以降のデータしか持たせていないためです。

この空白を回避したい場合には、calendarテーブルにデータがある最初の年までデータを入れてあげてください。
今回は2020年以前の登録者については調査対象外とするので、私はビジュアルのフィルターで空白を表示しないようにしました。

おわりに

いかがだったでしょうか?

累計はよく使うと思いますが、DAX関数を使用しなければならないと諦めていたりしませんか?
DAX関数を理解するには少し時間がかかりますが、使えるようになってくるとその世界が広がります。

年を跨いだ累計を出したい場合は、ぜひDAX関数にチャレンジしてみてください。