Power BI Desktopで前月比（MtoM）可視化

##WHOのCOVID-19データを利用

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

<img width="500" alt="Power BI Desktopで前月比 MtoM1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/9ac18402-2704-ae63-c257-5b791fc69a36.png">

CSVデータを取得します。

<img width="500" alt="Power BI Desktopで前月比 MtoM2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/09ea6379-20e9-2e14-2637-dc5e15851494.png">

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

<img width="700" alt="Power BI Desktopで前月比 MtoM3" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/31c7d121-0533-0667-ab9d-a2b6286bf2fe.png">

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

<img width="300" alt="Power BI Desktopで前月比 MtoM4" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/4d144cf5-2c3a-cc3b-1744-73a61d37df86.png">

<img width="700" alt="Power BI Desktopで前月比 MtoM5" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/c59bf025-c351-e0a3-5e50-a290ea060b5a.png">

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

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

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

<img width="800" alt="Power BI Desktopで前月比 MtoM6" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/abe8ae7a-0f24-43f3-c881-938921c9ae26.png">

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

<img width="300" alt="Power BI Desktopで前月比 MtoM7" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/15844c7c-35d7-ae49-53a7-e7c38ca19b6a.png">

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

<img width="800" alt="Power BI Desktopで前月比 MtoM7" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/6b95a133-9450-1678-07eb-84de710ffeb6.png">

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

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

<img width="300" alt="Power BI Desktopで前月比 MtoM8" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/236e9586-35c4-86a2-7be4-7e421ba0617a.png">

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

<img width="700" alt="Power BI Desktopで前月比 MtoM9" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/fcc54968-23e1-f818-2b91-be9bebd70ac0.png">

<img width="500" alt="Power BI Desktopで前月比 MtoM10" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/af580caa-27a3-00ce-fffd-ad7f8518908d.png">

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

<img width="700" alt="Power BI Desktopで前月比 MtoM11" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/9d3d7e51-48bf-21aa-a27a-64edfca85d60.png">

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

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

<img width="800" alt="Power BI Desktopで前月比 MtoM11" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/34df0567-ba9d-c4d9-7de8-546bb8942599.png">

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

<img width="800" alt="Power BI Desktopで前月比 MtoM12" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/9776de12-5505-1b8f-5488-48793d4a3635.png">

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

<img width="300" alt="Power BI Desktopで前月比 MtoM13" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/59553c57-30c7-8279-f279-048a660f4ed8.png">

<img width="800" alt="Power BI Desktopで前月比 MtoM14" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/2c391885-5cb2-a805-971c-5aa461a4cfb4.png">

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

##補足1：x軸表示について

x軸が以下のように

>年
>>四半期
>>>月

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

<img width="700" alt="Power BI Desktopで前月比 MtoM15" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/797eb264-95b8-ac5c-d9c2-c2a9d16f98c9.png">

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

<img width="300" alt="Power BI Desktopで前月比 MtoM16" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/e409ef8a-9e81-8582-0f43-c25da5438709.png">

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

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

このcalenderテーブルの記述、

```js
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月" ),
・・・
```
となっています。

<img width="800" alt="Power BI Desktopで前月比 MtoM17" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/c00330e4-b834-d97c-1f46-ee3804429c58.png">

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

[https://qiita.com/y-komuro/items/de3e2cb3dea129260079](https://qiita.com/y-komuro/items/de3e2cb3dea129260079)

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

<img width="700" alt="Power BI Desktopで前月比 MtoM18" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/bf2463b7-a048-2fa2-4f94-72efb1016b55.png">

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

**了**