前回の記事(3/5)のまとめ
前回の記事では新たにいくつかのテーブルを定義し、テーブルの間にリレーションを定義しました。
- 一番最近の日のデータのみを持つ
Latest
テーブル - 場所を表す
Location
テーブル - Confirmed、Deaths、Recoveredなどのステータスを表す
Status
テーブル - メジャーの定義を一か所で整理できるように
_Measure
テーブルを作る - 可視化した際に役に立つテーブルのリレーションシップ
今回の記事(4/5)のゴール
今回の出発点はモデルです。このモデルにはまだMeasure
(メジャー)がひとつもありません。この状態でグラフやチャートなどのビジュアルを作成することは可能ですし、もしかしたらそれだけで要求を満たすかもしれません。ですが、メジャーを使ってなんらかの「集計情報」を計算して可視化することでレポートにより意味のある情報を加えることができます。
以下のメジャーを作成します
- Cases すべてのケース(感染確認数+死亡数+回復数)
- Confirmed 感染確認数
- Deaths 死亡数
- Recovered 回復数
- Mortality rate 死亡数/感染確認数
- Recovery rate 回復数/感染確認数
- Daily Increase 増加数/日
メジャーの作り方
メジャーはどのテーブルの下でも作成できますが_Measures
テーブルにまとめて作成します。
下図のようにNew measure
メニューを選択します。
新規メジャーが作成され、_Measure
テーブルの下に追加されます。Formula Barが表示されてプロンプトがユーザーの入力を待っている状態になります。=
記号の左側にメジャーの名前を指定します。=
記号で始まる右側はDAX(Data Analysis Expression)フォーミュラと呼ばれます。
下はCases
メジャーの定義です。
Cases = SUM(Latest[Value])
LatestテーブルのValueカラムの値の和、ということになります。
他のメジャーを定義する
同じ要領で他のメジャーも定義しましょう。メジャーはデータモデルそのものを変更するわけではないので、エラーが出たりしても問題ありません。
ところでメジャーは他のメジャーを元に計算することも出来ます。Deaths
メジャーは上記のCases
メジャーを再利用しています。
Confirmed =
CALCULATE(
[Cases],
Latest[Status] = "Confirmed"
)
DAXフォーミュラを複数の行に渡って記述するには改行に「Shift+Enter」を使います。
どんどん定義していきましょう~。
Deaths =
CALCULATE(
[Cases],
Latest[Status] = "Deaths"
)
Recovered =
CALCULATE(
[Cases],
Latest[Status] = "Recovered"
)
Mortality Rate = DIVIDE([Deaths], [Confirmed])
Recovery Rate = DIVIDE([Recovered], [Confirmed])
最後に、少し複雑なDaily Increaseメジャーを定義します。ここでは今日と昨日の日を変数として格納して、今日までの合計から昨日までの合計を引いています。(もっと効率の良いDAXフォーミュラもあると思うので知ってる人はぜひコメント欄で教えてください)
DailyIncrease =
VAR today = MAX (master[date])
VAR yesterday = MAX ( master[date] ) -1
RETURN CALCULATE ( SUM (Master[Value] ), Master[Date] = today ) - CALCULATE ( SUM ( Master[Value] ), Master[Date] = yesterday )
全てのメジャーが定義し終えたら下図のようになっているはずです。
5/5に続く
さていよいよ、次の記事ではモデルとメジャーを使って情報の可視化を行います。