ExcelからPower BIへ！とりあえずやってみてドヤろう！

# はじめに
DX、市民開発、BI（ビジネスインテリジェンス）
もはや五月蠅いほど、こういったワードを聞くようになった世の中です。

このような中で**Power BI**が超お勧めなので紹介させてください！

## ターゲット
 - Excelに強い方！
 - vlookup関数なら負けない！ユーザーズ！

# Why Power BI??
端的に述べると**超初心者Welcomeツール**だからです！
Microsoft StoreもといMicrosoftのページで無料でダウンロード可能！

https://www.microsoft.com/store/productId/9NTXR16HNW1T

アドベントカレンダーで既に紹介されているかと思いますが、とにかく入りやすいんです！
まずカッコいいレポート**作ってみませんか？？**

:::note info
小声
BIはとにかく映えるんでウケが半端じゃないです！
:::

***
# ということでやってみよ～！！
ダミーデータをUserLocal様のサービスをもじって作りました。
とりあえず **「一人事担当がPower BIさわったら、え？あたし凄すぎぃ」** なラノベ風な感じで記事を書いてみます。

https://testdata.userlocal.jp/

 - 筆者の元データ
https://docs.google.com/spreadsheets/d/1JIb89_SAJeJYIXUdW4rgjCF0fOsr9JnC/edit?usp=sharing&ouid=116773316779811866717&rtpof=true&sd=true

使いたい方はご自由にどうぞ
***
# 公開データをもとに人事データダッシュボードを作る！
私のターゲットはバックオフィス、事務部門で虎視眈々と出世の機会を狙っている方々です！
**こんな感じでやると映える！** といった私見でお伝えします！

## データセットを作る
 1. まずはPower BI Desktopを開きましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/20198754-b80c-a3f7-08e0-1b6c7639e5e0.png)

    「データを取得」からローカルのExcelファイルを選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/0135b6c4-0207-3151-2252-3c2af29eb385.png)
     - 様々なデータに対応しています。ローカルのデータでなく、クラウド上の自動で更新されるデータであれば、BIのダッシュボードも自動で更新されていきます。
     - 今回はExcelで実施してみましょう
 1. Downloadフォルダの「data.xlsx」が対象です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/1ef95081-80ea-6b61-a6f7-b221896ba756.png)
     - データのソースは「テーブル」か「ワークシート」か自由に選択できます
     - データを読み込むと、 *Power Query Editor* が立ち上がり、データの整形が可能です。
1. Power Query Editorで進められたステップに注目する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/8b7945d5-05f5-7a00-538d-ebdd812fa724.png)
    - よく見ると既に「適用したステップ」が見受けられますね。
    - Queryで適用されたアクションは下記のとおりです。

    | Step | 概要 | 説明
    |---|---|---
    |ソース|データの読み込み先を選択|**どこの**データを参照しているか
    |ナビゲーション|読み込んだデータの参照先を指定|複数のデータの中で**何を**参照するか
    |昇格されたヘッダー数|ヘッダーを指定|読み込んだデータの*一行目*をヘッダーとして指定する
    |変更された型|データ型の設定|**各列**のデータ型をここで指定します

1. とりあえずこちらのデータを閉じて適用してみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/7924d979-c250-0cd7-3f83-1538aafe09fe.png)

閉じて適用をクリックするとデータが、Power BI上の要素として指定することが出来ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/435fc173-a08d-30de-e49f-35a5224526b9.png)

***
## ダッシュボードをデザインするうえで
BIを作る！といっても
 - [**デザイン**] どのようなレポートがカッコいいのか
 - [**内容**] どのようなインサイトを得たいのか

さっと思いつくのは難しいと思います。何もないところから上記をイメージして作ることは確かに難しい。

***
### 例を見てみる
https://learn.microsoft.com/ja-jp/power-bi/create-reports/sample-datasets

**まずは楽しく学んでいく上で、Microsoftが出しているサンプルを一度見てみることを提案します**
上記のlearnのページからサンプルをダウンロードしてみることが可能です。

 - 人工知能のサンプル
 - COVID-19 US サンプル
 - Power BI リリース計画レポート
 - お客様の収益性のサンプル
 - IT 支払い分析のサンプル
 - 人事のサンプル
 - 営業案件の分析のサンプル
 - 調達の分析のサンプル
 - 小売りの分析のサンプル
 - 売上およびマーケティングのサンプル
     - 売上およびマーケティングのサンプル テンプレート アプリ
 - サプライヤー クオリティ分析のサンプル
 - 財務サンプル ブックのダウンロード

**人事のサンプルをダウンロードして見てみます。**

### **人事のサンプルを見てみる**

 - MicrosoftのPower BI Sample 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/b9326fed-8d8c-8f12-47cf-44586dcef136.png)

早速カッコいい画面が出てきました。
こうした出来上がったデータは
 - デザインのアイディア
 - どういった分析が有用なのか
 - データのリレーションズはどうなのか
そういったことを自分のペースで確認することができます。

上記のレポートは、日付(月)に応じた「新規採用者数」「退職者数」の分析されています。
***

さてこの画面を参考に実際に**レポート**を作ってみます。

### 1. テキストボックスでタイトルを入れてみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/9e41f8fd-d80c-9138-6bc0-ee25cc102a2b.png)
    手始めにそれらしくタイトルを入れてみます。位置やサイズ、フォントといったプロパティは、サンプルと同一にしてみましょう。

### 2. 従業員数をカードで表現する
 - 視覚化で実現できるグラフ📊は多様です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/51dc9dc5-a557-764c-a224-370522476548.png)

- カードはコチラのアイコンになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/e400b2a0-d52e-a546-3cd8-c85655cee8e6.png)
     
- プロパティを修正しながら作っていく
    - 文字の大きさ、タイトル名、丸み、サイズを変えて、ビジュアルを組み立てていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/74013ad3-3883-6885-af13-3cb4083f993e.png)

**カードはスライサーと組み合わせると、ダイナミックに数字が表現される、Coolなビジュアルです。**

### 3. 性別の円グラフを挿入する
 - Sampleを参考に作っていきます
 1. Sampleの情報を深堀すると**レポート全体のテーマ**が指定されています。
     1. 合わせてみましょう。リボンの [表示] からテーマ設定ができます。
        **クラシック**に設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/2fe91661-77b2-7612-f54e-018176570426.png)

**それらしさ**が、Power Upしました！

### 4. 年齢別構成比を円グラフで表現してみる
 - 円グラフで「年齢構成比」をだしてみましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/31b07e66-b9a0-a1a1-4834-ef2333901623.png)

  - ここで大切なのは **年齢層**ってどうやって表現するんだろう？ということです。
    サンプルを見てみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/71370921-e210-72ea-29e4-7cd4054f9d7f.png)

  - AgeGroupとEmployeeという二つのテーブルを組み合わせて表現されています。
    ここで **リレーションシップ** の考えが登場してきます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/6ea9abf9-cf5d-fcac-e41d-23b0520db385.png)

[Employee]というテーブルで年齢層を当て込み、[AgeGroup]というマスタで順序や定義付けをしているようです。
「1対n」の関係を作ると、ビジュアルを作った際の「名前」や「凡例の順序」などが、マスタとなるテーブルで定義することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/38ad09bf-e220-9c68-5277-f2eb0cf8252d.png)

上記を参考に[AgeGroup]テーブルを作ってみましょう。こちらについては、Excelといった他の媒体からデータを読み込むのではなく、直接Power BI Desktop上で入力して作成してみます。

### 4. Power BI Desktopで直接テーブルを作ってみる
ex)
|AgeGroupID|AgeGroup
|---|---
|1|<30
|2|30-39
|3|40-49
|4|50-59
|5|60+

テーブルの作成は、[データの入力]で実行することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/6e861945-4b81-92ce-6f10-5dea2ceb416f.png)

直接入力で作った例です。Excelから直接データをペーストして作ることもできるので **静的なデータテーブル**は、
こうした形でテーブルを作るとラクになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/461b426b-c7b6-cdc6-462b-63426df4d41a.png)

### 5. [data]テーブルに[AgeGroupID列]を作る
さて、ここで[data]テーブルと[AgeGroup]テーブルを紐づけるには[data]テーブルにも[AgeGroup]列が必要になります。
Power Query Editorでつくることもできますが、**DAX関数**にも触れてみましょう。

> Data Analysis Expressions (DAX) は Analysis Services、Power BI、および Excel の Power Pivot で使用される数式表現言語です。 DAX の数式には、表形式データ モデルの関連テーブルと列のデータで高度な計算やクエリを実行するための関数、演算子、値が含まれます。
> - Microsoft learnより　DAXの概要 https://learn.microsoft.com/ja-jp/dax/dax-overview

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/b2a35d88-99f4-96ab-dfac-52fcef544a35.png)

[データ]の[新しい列]より、Excelの関数に似通った方法で計算列を作成することができます。

:::note warn
警告
奥が深い列でExcel関数イコールではないのでご注意ください
:::

https://learn.microsoft.com/ja-jp/dax/dax-overview

IF関数のネストですが、AgeGroupIDを求める計算式のサンプルはこちらです。
```
AgeGroupID = IF(data[Age] < 30, 1 ,
                IF(data[Age] <= 39, 2, 
                    IF(data[Age] <= 49, 3,
                        IF(data[Age] <= 59, 4, 5)
                    )
                )
            )
```

このように関数を設定し、列を作成することができます。
出来上がったID列でリレーションシップを組んでみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/1c12b846-083f-c2e5-c685-44c28398503d.png)

ドラッグアンドドロップでリレーションシップを構築します。

この状態でビジュアルを作ってみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/54a10670-9d4c-bdc6-d552-4cde995e6f04.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/d7bf5d04-c229-c176-ca1a-7cd07813c48f.png)

年齢層別にデータはできましたが順序が、どうやら人数の多い順に定義されています。
これを修正するためには、[AgeGroup]テーブルで、下記の作業が必要です。

#### AgeGroupの並び順をAgeGroupID順に設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/9bb6bb3b-188d-ceaf-e6a9-0eeddb5930e6.png)

**このマスタにより、年齢層の並び順が定義できます。**
逆にこれをしないと、文字列での並び順で評価されるため、欲する見方でグラフを見ることができません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/f7891ef7-8c61-ba80-219e-09929fcd637a.png)

こうした[元データ]と[マスタ]の関係を紡いでいくことがPower BIでは非常に重要になります。

組み方を考えるコツは**Vlookup関数**でイメージしていただければわかりやすいかと思います。
```
[検索キーとなる元データ]から[一意のIDに対する文字列を返す]
```
必要なことは**1対N**の関係を丁寧に紡いでいくことです。
これにより、DBにちりばめられたデータをつないでインサイトを得ることができます。

**マスタを細分化していくことは少し大変ですが正確なビジュアル、欲しいインサイトを得るためには必要なプロセスです。
是非頑張って進めてみましょう。**

さて、この記事は導入編という立ち位置で考えていますので、残りの部分は割愛します。
ひとまずあるデータで作ってみたダッシュボードは下記のとおりです。

***
# 最終的に作ってみたPower BI Dashboardがこちら

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/e735611f-f400-bf8a-1f01-022baa21d592.png)

とりあえずビジュアル📊を詰めてみた結果です。
**「どういったインサイトを得たいのか」** によってダッシュボードの作り方は変わってきます。
このデータでは**従業員の分布**くらいの要素しか分析ができません。

しかしPower BIはとにかく簡単に**映えます。**
目的に対し、Excelで培ったノウハウをさらに活かすうえで強力なツールです。

**Vlookup関数**というキーワードから始めてみるBIということで、作成してみましたが、興味のある方は書籍やUdemyから是非Power BIについて学んでみていただければ幸いです。

### おすすめの学習法

https://amzn.asia/d/e28n0Mv

https://www.udemy.com/course/ishiayaya/

***

Viva! Power BI!!
素晴らしいデータ分析ライフを！では！