3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Mから始めよう #2 ~Power BIでM式を使う~

Last updated at Posted at 2020-12-13

この記事は、Microsoft Power BI Advent Calendar 2020の14日目の記事となります。

前回の記事はこちら。

ロウソク足チャートとは

前回、簡単な折れ線グラフを作成いたしました。
image.png
このように、曜日によってデータが上下がパターン化されているデータは、一定期間の平均をとり、移動平均線で表示するのがいいのですが、もう少しすっきりと表示させるには、株価チャートで用いられるロウソク足のチャートがあります。
以下のようなやつです。
image.png
(Yahoo!ファイナンスより)

 ロウソク足チャートは、変化の激しい相場の流れを読むために、江戸時代の日本の天才相場師、本間宗久元が発明したといわれています。
 1本のろうそく足は、4つの値でできています。

始値:単位期間の開始時の値段
高値:期間中最も高かった値段
安値:期間中最も安かった値段
終値:単位期間の終了時の値段

 このうち、始値(はじめね)と終値(おわりね)で太い部分をつくり、上下の細い線は高値(たかね)、安値(やすね)を示します。始値と比べて終値が高い場合と安い場合では、太い部分の塗り方を変えます。上のグラフでは、終値が高い場合は中を塗らない、下がった場合は塗りつぶすとしていますが、別のものでは、上がる時は青く塗りって、下がるときは赤く塗るなど、やりかたはそれぞれです。

データの加工

 前回作成したものを使用し、ホームの「データの変換」から「データの変換」を選択すると、クエリエディタが起動されます。
image.png

左側に前回作成したM式のクエリが表示されていますので、右クリックして複製し、名前を適当なものに変更します。
image.png

 画面右の適用されたステップで「名前が変更された列」が選択されているのを確認して、1本のろうそく足は1週間で、日曜日始まり、土曜日終わりで作っていいきます。
 まず、「ホーム」メニューのリボンから「グループ化」を選択し、日付毎に新規感染者数を合計します。
image.png
 次に、カスタム列「WeekOfYear」を追加し、Date_reportedを使って、単位となる週の値を作ります。

WeekOfYear
Date.Year([Date_reported]) * 100 + Date.WeekOfYear([Date_reported])

日曜日から始まり土曜日で終わる数値が入るカスタム列「DayOfWeek」を作ります。

DayOfWeek
Date.DayOfWeek([Date_reported])

メニューの「列の追加」から「条件列」を選択して列を追加します。
DayOfWeekは、0から6の値をとるので、0の時にOpen、6の時にCloseの列に新規感染者数が入り、それ以外の場合は0の値が入るようにします。
image.png
image.png
「ホーム」メニューを選択し、グループ化の詳細設定を使ってWeekOfYearでグループ化します。
image.png
これで、元データが出来上がりました。
image.png
左上の閉じて適用ボタンを押して、レポート画面に戻ります。

ビジュアルの追加

 ロウソク足チャートは、標準のビジュアルには含まれていないので、追加します。視覚化のアイコンの最後に「・・・」という部分をクリックし、AppSoureからcandleを検索し「Candlestick by OKViz」を追加します。(Microsoft AppSourceにログインする必要あり)
image.png
 キャンバス下にあるタブで、ページを追加し、2ページ目にロウソク足チャートの枠をつくり、WeekOfYear, Open, Close, High, Lowと順番に選択します。
グラフの右上あたりにマウスを持っていくと、その他オプションが表示されるので、「・・・」を選び、並び替え条件の「WeekOfYear」を選択して昇順で並び替えます。これで、ひとまず完成です。
image.png

うまく表示されない

 このグラフを日曜日に作ったなら、問題はありません。しかし、それ以外の曜日に作ると、次の土曜日のデータがないため、下のグラフのように終値が0になってしまいます。
image.png
 日曜限定で使用するグラフなら問題ないのですが、毎日更新したいなら、これじゃ都合が悪いのです。
 問題点は3つあって、1つは最後の終値が取れない問題と、もう1つは最初の始値がとれない問題があります。この解決方法として、最初の始値は、データの一番最初の日の値を使う、最後の終値は、最終取得日のデータを使うことで解決しましょう。3つ目は、X軸の値が日付でないことです。人に見せるなら、日付で表示させたいし、このままだと移動平均線の計算ができません。
 で、解決方法ですが、当然DAXではなくMでやります。

今回わかったこと

1. ロウソク足チャートは日本人の発明
2. 計算結果を新しい列に追加できる
3. グループ化で合計、最大、最小 etc. がとれる
4. 標準にないビジュアルも追加できる

続く

作成したpbixファイルは、githubに登録してあります。

3
4
0

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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?