DAXを利用した移動平均式を生成
「Power BI Desktop」では、「新しいクイックメジャー」機能を使用し、移動平均の「DAX」(Data Analysis Expressions)式を生成できます。
今回使用したデータは、厚生労働省のサイト「データからわかる-新型コロナウイルス感染症情報-」から「新規陽性者数の推移」を取得しています。
「移動平均」を選びます。
クイックメジャーに使うフィールドを配置すれば、計算式を生成してくれます。
下記の画面では、7日間移動平均を計算しています。
「前の期間」を「6」とすることで「7日目とその前の6日間 = 7日間」となるようです。
生成されたDAX式が以下です。
Newly confirmed cases 移動平均 =
IF(
ISFILTERED('calender'[Date]),
ERROR("タイム インテリジェンスのクイック メジャーは、Power BI が指定する日付階層またはプライマリの日付列でのみグループ化またはフィルターできます。"),
VAR __LAST_DATE = LASTDATE('calender'[Date].[Date])
RETURN
AVERAGEX(
DATESBETWEEN(
'calender'[Date].[Date],
DATEADD(__LAST_DATE, -6, DAY),
__LAST_DATE
),
CALCULATE(SUM('pcr_positive_daily'[Newly confirmed cases]))
)
)
グラフを作成すると6日分余計に
DAX式をY軸に配置し、移動平均のグラフを作成します。
元データは県別の値が取得できます。
県から地方を参照できるテーブルを別途用意し、地方別のグラフにしています
ただ、上記のグラフは、6日先までプロットしています。
日付を降順に並べたのが下の表です。
最新の日付は「2023年1月31日」です。
一方、グラフの先端は「2023年2月6日」になっています
「2023年1月31日」を視点とした7日間移動平均の値までを描くようです。
今回は「ヒント」を使って修正
グラフを「2023年1月31日」までにしようと、スライサーやフィルターを使いましたが、コントロールできませんでした。
※コントロールできないのは、日付=DATEが「年」「四半期」「月」「日」の階層構造になっていることが関係してるようです。
ただ、今回のクイックメジャーでは階層型のデータを使う必要があるので、ここは変えられませんでした。
他に効率の良い方法があるかもしれませんが、今回は「ヒント」フィールドを利用しました。
「ヒント」にX軸に使った時間要素を配置します。
グラフの上にマウスオーバーすると表示される要素を追加したい場合、「ヒント」を使えます。
「最も古い・・・」という表記になりますが、このまま進めます。
「フィルター」を使って、「最も古いDate」に対し「空白でない」という条件を加えます。
こうすることで、「存在するDateの値のみX軸として表示」と設定できます。
上記条件を反映したグラフです。
終点が「2023年1月31日」になっています。