Excel Online から Power BI レポートを作成した (筋トレデータをレポートにしたい その2)

9/18/2021

Microsoft 365 Office 365 Power BI SharePoint

前回の投稿、筋トレデータをレポートにしたい その1(Power AutomateアプリでExcel Onlineに追記するフロー)で、データをエクセルオンラインに保存するようにしました。今度は、これをPower BI でレポートにしたいと思います。


やりたいこと

やりたいことは、まずはこの3つです。

  • どのトレーニングをどれぐらい「やっているか」を可視化したい
  • 「やっていない」日を可視化したい
  • スマホから見たい
特に、やっていない日は可視化して、反省したいというのもあります。
日別の実績データが見えて、直近のトレーニングの割合が見えたらいいなぁ、というので作ってみます。


Power BIにデータを取り込む

Power BI アプリからSharePoint上のエクセルファイルのデータを取り込みます。

Yellow11さんの、Power BIでSharePointのデータを利用するを参考にさせていただきました。リストの取り込みも紹介されていて、わかりやすいです。多謝。



データソースは「履歴を貯めているエクセルファイル」ではあるのですが、データソースにはSharePoint フォルダーを使う必要があります。

Power BI Desktopの データを取得 - すべて - SharePoint フォルダー を選択します。

SharePointフォルダーには、データを保存したサイトのURLを指定します。


データソースの設定で認証を求められたら、匿名やWindowsアカウントではなく、Microsoft アカウントを選びます。Office 365 を使っていても、マイクロソフトアカウントです。

サイト内のファイルが表示されるので、データの変換。

ファイル一覧が表示されるのですが、Contentの下矢印を選択します。


取り込みたいエクセルファイルの、テーブルを選択します。テーブルの中身が表示されたら、OKします。

取り込み、完了です。

データの加工

取り込んだデータには、日付、種類、回数の列があります。ですが、データに問題が2つあって
  • 腹筋チャレンジは、負荷の考えると回数そのままでは比較に難がある。10倍にしたい。
  • 日時で取得しているけど、日付だけでよい。ただし今後使うかもしれないので日時は保持しておきたい。
というわけで、列を追加しました。

列の追加から、「日付」という列を作成します。
日付 = '回数データ'[日時].[Date]
日付列とは、「回数データ」というテーブルの「日時」という列を、日付として返します。

同じく列の追加から、「回数2」という列を作成します。
回数2 = if('回数データ'[種類] ="腹筋チャレンジ",'回数データ'[回数]*10,'回数データ'[回数])
回数2とは、「回数データ」というテーブルの「種類」という列が”腹筋チャレンジ”なら「回数」をという列を10倍した値を返し、そうでない場合は「回数」列の値をそのまま返します。

エクセルの関数と似たような感じですね。


日付テーブルの作成

実績のデータを蓄積したテーブルはすでにあるのですが、いろいろなブログでも「日付テーブルは作成を!」と書かれています。ある程度はPower BIで自動で日付テーブルとみなしてくれるそうなのですが、おかしな挙動になることもあるそうです。日付テーブルを作成し、としてマークしたほうが良いようです。

テーブルツール - テーブルの作成でDatesというテーブルを作成したあと、Microsoft Learn の「日付テーブルを作成します」をそのまま使って、作成しました。


Dates = CALENDAR(DATE(2021, 1, 1), DATE(2022, 12, 31))
「Dates」というテーブルに2021年1月1日から2022年12月31日までの日付の入ったカレンダーを作成します。

列の追加で、年、月、曜日の列を作成しました。


最後に、「日付テーブルとしてマーク」します。

できあがりです。列の名前を、今回はDate1に変更しています。


履歴のテーブルと日付テーブルを関連付ける

今は、この2つのテーブルの間に関連がないので、関連付け(リレーションシップの作成)を行います。Dateテーブルの「Dates列」を、履歴データテーブルの「日付列」にドラッグしました。

ついでに、年、月であとから分解して見たくなるので、階層を作成します。
Dateテーブルの「Date1」の…から、階層を追加して、年から、月、月から日になる順に並べて、最後に適用します、を選択します。


レポートを作成する

あとは、視覚化を置いていきます。

どのトレーニングをどれぐらい「やっているか」を可視化したい、「やっていない」日を可視化したい、という要件を満たせるようになりました。


・・・腹筋周りのメニューばっかりなのは、気になるのがここだからです。


あとは発行して、webから見えるようにしました。発行したので、スマホから見たい、という要件も満たせました。


これで筋トレの励みになりそうです。なのですが使い始めて早速いくつか気になるところが出始めました。これはまた後日。


参考資料

Power BIでSharePointのデータを利用する - Yellow11
https://qiita.com/Yellow11/items/39336e331c397bd94d2a

ありがとうございます!


日付テーブルを作成する - Microsoft Learn
https://docs.microsoft.com/ja-jp/learn/modules/design-model-power-bi/3-date-table