LoginSignup
2

More than 1 year has passed since last update.

Power BI Desktopで前月比(MtoM)可視化

Last updated at Posted at 2021-04-05

WHOのCOVID-19データを利用

最近、NHKのニュースで「米国、英国でワクチン接種が進み、陽性者数、死亡者数減少」と聞いて、集計してみることにしました。
WHO(世界保健機関)が公開するデータを使い、前月比を計算しました。

Power BI Desktopで前月比 MtoM1

CSVデータを取得します。

Power BI Desktopで前月比 MtoM2

「読み込み」をクリックして取り込み、Power Query エディターで加工可能な状態、および可視化設定可能な状態にします。

Power BI Desktopで前月比 MtoM3

「米国」(United States of America)と「英国」(The United Kingdom)の陽性者数を月別棒グラフにします。
なお、時間軸には別途用意したcalenderテーブルDateに、陽性者数のには取り込んだデータのNew_casesを使いました。
グラフ下のドリルアップで日毎から月単位のグラフに変更しました。

Power BI Desktopで前月比 MtoM4

Power BI Desktopで前月比 MtoM5

クイックメジャーを使い前月比計算列を追加します

右側のフィールドパネル内を右クリックし、「新しいクイック メジャー」を選択します。
基準値New_cases日付Dateを配置します。
期間数1を指定します(前月比は1のようです)。

※「列」という表現を使いましたが、Power Query エディター上で加工できる列にはなりません。既存の列の値を使って可視化設定時に計算されているようです。

Power BI Desktopで前月比 MtoM6

先ほど作成した棒グラフをコピーし、下に配置します。
このグラフを前月比のグラフにします。
New_cases「New_cases_MtoM%」に差し替えます(ドラッグします)。

Power BI Desktopで前月比 MtoM7

下のグラフが前月比(MtoM)に切り替わります。

Power BI Desktopで前月比 MtoM7

グラフを見やすく整えます

恐らく、データ集計の最初の月の計測値はその翌月との開きが大きくなっているため、前月比が極端に大きくなるようです。
期間スライサーを使って計測期間を短くすることにしました。

Power BI Desktopで前月比 MtoM8

相対日付最近の6カ月と指定します。

Power BI Desktopで前月比 MtoM9

Power BI Desktopで前月比 MtoM10

ところが、「ビジュアルを表示できません」とエラーメッセージが出ました。

Power BI Desktopで前月比 MtoM11

「エラー」回避をフィルターパネルで

スライサーだと、指定した期間のみを有効値にするからか、集計対象初月の前月が計算対象外となり、エラーとなるようです。
次に、フィルターパネルで指定することにしました。
●年●月形式のデータとして扱いたかったため、「年」「四半期」「月」「日」と階層化されていない、WHOのデータで取り込んだDate_reportedを使いました。

Power BI Desktopで前月比 MtoM11

「最近の6カ月」と指定すると、今度はエラーとならず可視化できました。

Power BI Desktopで前月比 MtoM12

この状態では集計月(4/5時点)の翌月(5月)も表示され、-100%と表示されています。
集計データが入っている翌月までの前月比を出す振る舞いになっています。
5月を外すために、フィルターパネルのNew_cases_MtoM%の設定で-0.99(-99%)より大きい時に表示としました。
※この設定は最初の設定を翌日に持ち越し、その前に設定をいくつか試した影響のためか、グラフの配色が変わってしまいました。

Power BI Desktopで前月比 MtoM13

Power BI Desktopで前月比 MtoM14

ひとまずここまでとします。

補足1:x軸表示について

x軸が以下のように

四半期

という構造になっています。

Power BI Desktopで前月比 MtoM15

この表示にするには、視覚化パネルの書式で、x軸→ラベルの連結をOFFとします。

Power BI Desktopで前月比 MtoM16

補足2:calenderテーブルについて

取り込んだデータの期間にデータがなければ、その日付自体が抜けていたりします。
その状態だと、その列を日付型として扱えなかったりするケースがあります。
また、日付型の時系列データを持っておけば、ほかのテーブルとの紐づけに役立ちます。
例えば、今回は新型コロナウイルスのデータを扱いました。
そのデータに消費支出の推移を重ねたい場合、両者のデータをcalenderテーブルで紐づけることで実現可能となります。

このcalenderテーブルの記述、

calender = 
VAR StartDate="2017/01/01"
VAR EndDate=TODAY()
VAR Today=UTCTODAY()+9/24
VAR ThisFY=if(MONTH(Today)>3,YEAR(Today),YEAR(Today)-1)
VAR BaseCalendar =CALENDAR (StartDate,EndDate)
RETURN

ADDCOLUMNS(
    BaseCalendar,
    "年_数値", YEAR ( [Date] ),
    "年_yyyy年",FORMAT([Date],"yyyy年"),
    "月_数値", MONTH ([Date]),
    "月_MM月", FORMAT ([Date], "MM月" ),
・・・

となっています。

Power BI Desktopで前月比 MtoM17

元のソースをどこから使用させてもらったのかたどれなくなっているのですが、以下が近い内容の感じです。

https://qiita.com/y-komuro/items/de3e2cb3dea129260079

なお、calenderテーブルと今回取り込んだテーブル(データ)は、以下のように関連付けしています。

Power BI Desktopで前月比 MtoM18

作業の区切り区切りで保存します。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2