Power BIを使ったはじめてのデータ分析

# はじめに
システムに入っているデータを分析して報告資料を作りたい！！できればリアルタイムに最新情報を把握したい！！でもシステムには思ったような状態のデータがないし、必要なデータをシステムから大量に出力して、エクセルに張り付けて加工して、、分析して、、きれいに整頓して、、とてもではないが大変すぎて毎回はできない！！そんなシーンは誰もが考えたと思います。

こんな時に役立つツールがTableauやPower BIと呼ばれるデータ分析用のツールです。
BIツールを使うことでシステム側の改修を依頼しなくとも、必要なデータの収集・加工・分析が可能となります。

今回はそんなツールの中でも、無料版のあるマイクロソフト社の提供するPower BIについてご紹介します。

https://powerbi.microsoft.com/ja-jp/getting-started-with-power-bi/

尚、レポートの共有/公開まで実施したい場合は、Microsoft 365アカウントが必要となります。


# データ分析ってどうやるの？
データ分析は大まかに3ステップで進めます。
1. 必要なデータの決定とPower BIへの取り込み
2. 分析を目的としたデータ加工
3. 加工したデータをもとに可視化する（レポート作成）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/1c0103b6-45ed-ddb2-c111-82c32a0a19b9.png)


# 実際にやってみる
ここから実際にやってみながら説明します

## ステップ1.　データ選定・取り込み
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/bbff3ae4-a9d5-785b-0f63-8fa254b9fe2c.png)

まずは分析対象データを決めます。データの決め方は目的から決めていくことになると思いますが、今回はどこにでもある人事情報と売上の相関を確認したいとします。
システムからは以下のデータを個別に取得できるとします。

* 各所属の月次売上
* 社員台帳
* 資格取得状況
* 異動履歴
* 組織一覧
* 役職と原価の一覧

テストデータはこちらから取得してください。

https://drive.google.com/file/d/1vcgFbWzZF4mix46h2ca2lzavhtQ7pjdD/view?usp=share_link


ホームタブ＞データを取得＞テキスト/CSVを選択して必要なファイルを取込できます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/2d1557c0-0318-84b7-c312-72f18033f2f0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/31d28fb8-fa2d-9fc3-5204-88cd7f4c95f6.png)

取込できたデータは右のデータ欄に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/5a16804a-2648-7f96-4247-42d36552c2fd.png)


:::note info
今回はCSVというテキストファイルですが、ExcelやSharePointのファイル、データベースからも取込できます。
:::


## ステップ2.　分析用データの設計と加工

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/e714142c-c1bf-6f15-a93a-6f3537eb3114.png)

Power BIへの読み込みができましたら、分析用にデータを加工します。
分析用データを作成するためには、分析対象と分析尺度を必要があります。分析対象と分析尺度を整理しておくことで、後々に共通の尺度で複数の対象を比較しながら分析することが可能となります。分析対象や分析尺度の抽出・設計する際の考え方はスタースキーマという考え方に基づいてモデル化（抽象化）していく事が基本となります。スタースキーマについてはこちらの記事が参考になります。

https://qiita.com/ns-horikoshi/items/a7a68f066f3f7b0bb0d5


今回は分析対象を三つ、分析尺度3つとし、これら作成していきます。
＜分析対象＞
* 売上
* 人件費（役職に基づく簡易版）
* スキル情報

＜分析尺度＞
* 年月
* 社員情報
* 組織情報

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/be78ac4b-ab15-dd98-8357-3b89a3fe165d.png)

#### 0. クエリの編集を開く
データの編集を行うためには、事前準備としてクエリの編集画面を開く必要があります。
クエリの編集画面はデータ欄より、右クリック＞クエリの編集で開くことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/8bb0605c-f725-6d42-17ba-d2cbd0aa05e4.png)


#### 1. 売上ファクタ
売上情報は特に加工の必要はありません。分析対象テーブルであることが分かるように名前だけ変更しておきます（右クリック＞名前の変更から変えられるので）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/c8d15427-eaf0-6fc8-1a94-c2dbf0b9837b.png)


#### 2. マスタテーブル
社員情報と組織情報は特に構成を変更する必要はありません。こちらも名前だけ変更しておきましょう。年月だけは取込情報にありませんので別途作成が必要となります。
ちょうど売上情報に年月情報があるのでこちらを参照コピーして年月マスタを作成します。

複製にあたっては、対象クエリを右クリック＞参照を押すことでコピーできます（複製：加工ステップごとコピーする。参照：加工後の結果を呼び出すのみ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/4fd10980-d995-7732-0c49-029c33dba0b0.png)

コピーした売上ファクタを年月マスタに名前を変更しておきます。その後、「年月」列を選択して右クリック、他の列を削除することで「年月」列のみが残ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/e62ddde1-df01-c106-3cd0-41820c621bef.png)

その後、重複の削除を行うことで年月マスタが出来上がります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/0ceef5b2-af27-848c-b6aa-f8dabecced49.png)

ちなみに加工内容は画面右の適用したステップに記憶されるので後から変更が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/320f77f1-d582-14f4-3700-ca5bbca09c29.png)


#### 3. 人件費ファクタ 
人件費ファクタは、年月、所属、役職単位の人件費データを指しています。そのため必要な情報は役職ごとの原価と各年月時点の在籍者情報となります。これらは先ほど作成した年月マスタをベースに異動履歴と役職一覧をマージすることで作成することができます。

まずは年月マスタを参照コピーして人件費ファクタと名前を変更しておきます。
次に列の追加＞カスタム列の追加から、異動履歴テーブルを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/867168bb-fb98-5f0e-00c3-e277989e77ea.png)

こうすることで、年月1行ごとに異動履歴テーブル結合されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/1d0be8e5-197a-710c-adfe-8e4aa6e0eb0f.png)

結合された異動履歴テーブルを展開すると、年月行数×異動履歴行数のデータが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/cdebbaa7-7dc2-4cce-8d67-e035a09025e3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/8a8920c3-a7ae-4aee-cf28-896329e77c57.png)


作成されたテーブルから年月時点で有効な異動情報のみになるよう絞り込みします（既成手順ではできないため、ちょっと複雑な手順になります。。。。）

まずは、年月で適当に絞り込みを行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/b312dead-ba39-5a50-23f2-64ed5f5b084c.png)


でき上った関数について以下のように直接修正します。

(修正前)
```
= Table.SelectRows(#"展開された カスタム", each ([年月] <> #date(2000, 4, 1)))
```

（修正後）
```
= Table.SelectRows(#"展開された カスタム", each ([年月] >= [#"異動・発令日"] and ([年月] < [終了日] or [終了日] = null)))
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/f260e8fd-c9b5-974d-f0dd-8b144683716f.png)

次に、役職をキーに役職一覧をマージし、役職ごとの原価情報を取得します（ホーム＞クエリのマージ）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/6398a982-480d-9d24-ec35-72158acc4c1f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/4ffecffe-7c3e-5819-6b31-c94d154b5c12.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/830ffe05-07d5-95c6-8555-d53275fefbd8.png)

最後に年月、配属先、社員id、月給以外の列を削除して完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/17306b4b-05bb-1312-48c1-b00e60b4ec84.png)


#### 4. スキルファクタ 
人件費ファクタは参照コピーしてスキルファクタを作成します。月給列を削除したのち、人件費ファクタと同じ要領で資格履歴を社員idをキーにしてマージし、年月＞＝資格取得日でフィルタします。最後に不要な列を削除して完了です。

#### 5. 編集結果の反映
ホーム＞閉じて適用をクリックすることで編集結果を元画面に反映できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/67f4f6ef-049a-2b0f-c987-d86c41cba1de.png)


## ステップ3.　リレーションの設定とレポート作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/22376eac-95db-01d1-bf69-4d71ddd21017.png)

#### 1. リレーションの設定
分析対象テーブルと分析尺度テーブルの準備が完成しましたら、いよいよ分析の準備に入ります。
分析するためには、モデルビュー画面より分析対象と分析尺度を結び付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/21a00a08-dbcc-878b-3da9-b5986f2cf640.png)

結び付けたい項目を選択して、結び付け先の項目までドラッグすることで結び付けができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/8791ee51-aad5-d582-67c9-432491c6aeae.png)

想定していたモデルの通りに全ての結び付けを行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/be78ac4b-ab15-dd98-8357-3b89a3fe165d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/93edc5e3-b191-f4d4-d417-159c59c9b652.png)

#### 2.レポートの作成
レポートビューに戻り、グラフを作成します。例えば、年月マスタのX軸に配置し、売上ファクタの売上と人件費ファクタの月給をそれぞれY軸に配置することでX軸を共有したうえで売上と人件費の推移を比較することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/95e3695a-c25b-b9f4-316d-6320267e3d1f.png)

このように設定した分析対象を様々な尺度で比較することができます。図のようにタイムラインを用意することも可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/480135de-8b90-875e-bfb2-a035546ec985.png)


レポートを発行し、Power BIサービスに掲載して共有する場合はMicroSoftアカウントが必要となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850014/00e66e9a-3448-d2f0-0764-a7b03a213025.png)


# おわりに
いかがでしたでしょうか。設定を変えることで様々な尺度でデータを比較することができますし、分析データを継続利用することも容易です。また設定次第ではリアルタイムに更新されるデータを共有することもできますので是非試してみてください！！