Power BIでデータ解析を視覚化する 作成編

前回のエントリーでは、Power BIの最も基本的な情報と使い方についてのみ記述しました。しかし、これではExcelでデータを元にグラフを描いているのと対して変わりません。BIとしての活用は、複数のデータソースを元に解析を行ったり、元データの加工、Excelにはないタイプのカスタムビジュアルなどにあります。

この中で、主に最初に身に着けておくべきは複数データソースの連結とデータ加工を行うPower Queryの習得。可視化よりもむしろこうした元データの整備にこそデータ解析の一番大事な部分が含まれていますので、単なるグラフ製造機にならないように、データ加工技術を身に着けましょう。

今回使用するアプリと資料

色々なデータソースやビジュアルを利用し、インタラクティブに可視化したデータを操作出来るのが、Excelとの大きな違い。また、単一ソースではなく複数の全く別のソースを連結して操作する様子は、Accessを使ってる人ならば結構おなじみの機能となります。

また、データそのものの加工では、ExcelではおなじみのPower Queryを利用しているので、すでにExcelで使ってる人に取っては学習コストが大幅に削る事が可能です。

データの接続と加工

ODBC経由で接続する

Power BIは多種多様な殆どのメジャーなデータソースへは、ODBCドライバを使わずに接続が可能になっています。データソースから選んで、パラメータをセットしてあげればテーブルとして出てくるので、あとはグラフを作ったり解析したりすれば良いだけ。ですが、業務で利用してるシステムが現代的なイケてるシステムではなかったり、また標準では用意されていないものの、よく利用するデータソースの場合には、それらに用意されてるODBCドライバを利用する事で、接続させる事が可能です。

今回は小規模システムやウェブなどではよく利用されている「SQLite」のファイルに対して接続し、可視化をしてみようと思います。

ドライバのインストール

Windows用のSQLiteデータベース用ODBCドライバはこちらからダウンロードが可能です。sqliteodbc_w64.exeが64bit用のODBCドライバになりますので要注意。インストール自体は非常に簡単に完了します。但し、管理者権限が必要になりますので、制限のあるPCでは管理者に依頼してインストールして貰う必要があります。

  1. ドライバのインストーラをダウンロードする
  2. exeを実行する。管理者権限を要する場合、管理者アカウントとパスワードが必要です。
  3. 英語の画面ですが、Next -> Agreeと進んでいきます
  4. 途中、SQLite2のドライバはどうする?と問われますが特に入れなくても良いです(今回のはSQLite3用ドライバになります)。
  5. インストールが完了して、finishをクリックすれば完了。

SQLiteのデータは、DB Browser for SQLiteで作成可能。csvでインポートも出来るのでインストールしておくと便利です。

図:DB Browserでデータを入れておいた

DSNの作成

ドライバだけ入っても意味がないので、Power BIから使えるようにDSN設定を作成します。これは、ODBCドライバと接続先、ID、パスワード、オプション設定などを一纏めにしてくれるもので、これを経由して接続する事になります。DSN設定の作り方手順は以下の通りです。

  1. コントロールパネルを開き、管理ツールを開く
  2. ODBCデータソースという項目を開く(今回は64bitを開いた)
  3. ユーザDSNのタブを開き、追加をクリックする
  4. ドライバはSQLite3 ODBC Driverを選択して完了をクリック。次の画面では接続する為の詳細な情報を入力します。
  5. Data Source Nameは適当に入力(test sqliteと入力しておいた)。Database NameはBrowseボタンをクリックして、用意しておいたSQLiteのファイルを指定
  6. OKをクリックして完了(SQLiteはパスワード保護が無いので、ユーザIDやPWの設定は不要です)

図:ODBCのDSN設定作成中の様子

接続してみる

作成したDSN設定に基づき、SQLiteに接続してレポートを作ってみようと思います。

  1. Power BI Desktopを起動する
  2. リボンより「データを取得」をクリックする
  3. すべての中にある「ODBC」を選択し、接続をクリック
  4. ODBCからインポートのドロップダウンに作っておいた「test sqlite」の設定があるので選び、OKをクリック
  5. SQLiteにはIDとPWが無いので、最初の1回目だけODBCドライバ画面が出ます。この画面では、Windowsを選び、現在の資格情報を利用するにチェックをいれて、接続をクリックすれば良いです。
  6. テーブルが出てくるので、予めSQLiteに作り込んで於いたテーブルを選択、読み込みをクリックする
  7. あとはこれまで同様にレポートを作成すればOKです。

図:ODBCコネクタを選択する

図:ログイン認証等設定画面

Accessを活用する

概要

Power BI導入初期はお手軽ということでExcelをデータソースに色々とチャンレンジするのが定石でしょう。しかし、一番オススメなのはMicrosoft Accessデータベースをデータソースにする事です。事項にあるようなデータソースの連結などを、Power BI上で行うのではなく、Access側で完了できる点が強みです。Access上で管理アプリを構築し、そのデータソースをそのままPower BI上で利用できる為、Power Queryが苦手だけれどSQLは得意という人にとっても、オススメです。

クエリを制する者はAccessを制する

リレーションシップ

Accessの非常に大きな利点はリレーションシップで複数のテーブルと接続し、クエリでそれらをまとめて「新たなテーブル」として活用できる点にあります。例えば勤怠などで従業員マスタと出退勤マスタがあった場合、出退勤マスタ側は通常正規化されていれば、従業員番号は入っていても従業員名は含めません。そこで、この2つのテーブルをリレーションシップで接続し、新たにクエリを作って、1つのテーブルとして作る事で、Power BIで使いやすいデータソースとすることが可能です。

リレーションシップ自体はPower BIでも作成可能とは言え、1つしか張れないので複数のリレーションで接続するにはAccessは必須です(年度と都道府県の2つで連結みたいなやり方)。次項の複数データソースの連結をAccessで行い、Power BIで表示してみようと思います。

  1. Accessに人口動態統計と賃金統計の2つのデータをExcelファイルからインポート
  2. クエリを作成し、1.の2つのテーブルを追加する
  3. 年度および都道府県の2つの列同士にリレーションシップを張って、「両方のテーブルの結合フィールドが同じ行だけ含める」として連結
  4. 人口動態統計から年度、都道府県、出生総数、死亡総数の列をクエリに追加
  5. 賃金統計からは現金給与額の列をクエリに追加。これで、2つのテーブルから年度と都道府県の2つでもって連結したクエリが完成(人口賃金相関関係と命名)
  6. Power BI DesktopでAccessコネクタを利用して、5.のクエリに接続させ読み込み
  7. あとは、データソースを元にビジュアルレポートを作るだけ。
  8. 都道府県に対応する東北、関東、中部、関西などのエリアマスタをつなげて、エリア名を追加するようなクエリを作ると、Power BIでエリア単位での集計視覚化も可能です。

※その他、ユニオンクエリや集計クエリなど多彩なデータ集計が可能なので、Power BIで操作を覚えるよりも有用です。

※クエリ内でVBAによる自作関数を使ってるクエリはPower BIからは接続が出来ません

※クエリに於いて、クロス集計クエリについてはPower BIからは接続が出来ません

図:2つの列で連結してクエリを作ってる様子

図:綺麗に簡単に視覚化できた

複数データソースの連結

Power BIはデータ解析を目的としてるアプリケーションであるため、様々な角度や複数のデータソースを用いてのマルチな視点から、データの相関性であったり、傾向を捉える必要があります。よって、Excel上で行うような単一データソースを元にグラフ化というのは、Power BI上で行うには本来勿体ない使い方です。

今回のサンプル事例で言えば「人口動態統計」として、都道府県毎の出生数と死亡数が入っていますが、都道府県名をキーとして、もうひとつ別のソースとして都道府県別平均月収といったデータがあれば連結する事で、出生・死亡のデータと月収との間になんらかの相関関係が見いだせるかもしれない・・・といった具合に使うのが本来のBIです。この2つの全く別のデータソースを連結をPower BI上で行う事が可能です(一方はExcelデータ、一方はAccessデータといったような混在も可能)

という事で追加のソースとして、e-Statの賃金構造基本統計調査の都道府県別一般労働者(参考表)都道府県別きまって支給する現金給与額、所定内給与額及び年間賞与その他特別給与額(47都道府県一覧)のデータを人口動態統計と同じ年度数分用意して連結比較してみることにしました。

  1. Sheet1に10年分都道府県別人口動態統計、Sheet2に10年分都道府県別現金給与額月額平均のデータを格納したExcelのデータを用意(年度と都道府県で一意になるように、ID列を連番でそれぞれ振っています
  2. Power BI Desktopにて1.の2つのシートデータをExcelコネクタで読み込み
  3. 右サイドバーにある「モデル」をクリックする
  4. Sheet1を親としてSheet2を子として、ID列同士をドラッグ・アンド・ドロップでつなげる
  5. カーディナリティは1:1、クロスフィルタは双方向
  6. データテーブルをビジュアルとして追加し、Sheet1とSheet2のデータをそれぞれいてみて、結合が正しいか確認する
  7. 6.でSheet1の値とSheet2がきちんと結合できてればあとは、6.の手順で視覚化をしてみるだけ。
  8. 今回は賃金部分を2軸目としてグラフに追加しています。賃金はたしかに上昇しているけれど、出生率はガンガン下がっていってる傾向がわかります。

今回の統計解析の場合、賃金上昇と出生率は反比例してるわけですが問題は、だからといって賃金上昇は出生率上昇のインセンティブにならないという判断は完全なミスリードです。まだまだこの統計の解析には、変数が足りない(可処分所得で見たり、一般労働者以外の非正規雇用データは入っていないので)。

複数のカラムでリレーションを作成は出来ないので、そういった用途ならばAccess側で複数カラムのリレーションを作って連結したクエリを用意するほうが楽に作成可能です。

図:1:1のリレーションシップを貼った

図:データテーブルで結合が正しいか確認

図:相関関係を導き出すには・・・

SharePoint Online上のExcelに接続

Microsoft 365を導入していて、Power BI DesktopからローカルではなくSharePoint Onlineのドキュメント内にあるExcelへ接続したい需要は結構多いのではないかと思います。しかし、Power BI Desktopの接続ソースには、Excel Onlineは無くまたSharePointフォルダコネクタだと・・・という時は、「Webコネクタ」を利用して、接続が可能です。但し、社内のセキュリティなどの都合で、そのままだとアクセスが拒否されるので、以下の手順で接続するとデータを取り出す事が可能です。

  1. ファイルが置いてあるSharePoint OnlineのドキュメントフォルダのURLをコピーしておく
  2. コントロールパネルを開き、インターネットオプションを開く
  3. セキュリティタブを開き、信頼済みサイトをクリック、サイトをクリックする
  4. ゾーンに追加に、1.のURLを入れて、追加ボタンをクリック。
  5. 一旦これで、IE11でそのドキュメントフォルダを開き、Microsoft365にログインする(この時パスワードなどは保存するようにする)
  6. 続いて、5.のフォルダ内にあるターゲットのExcelファイルの「︙」をクリック、開く⇒アプリで開くでExcelで開かせる
  7. メニューより「ファイル」を開き、情報タブのすぐ下に、そのファイルまでのURLパスが出てるので、クリック⇒パスをクリップボードにコピーする
  8. 7.のURLから末尾の?web=1を除去したURLにて、Power BI DesktopのWebコネクタで開かせる
  9. Webコンテンツへのアクセスダイアログが出るので、「組織アカウント」⇒サインインで、Microsoft365でサインインする
  10. 接続をクリックする
  11. ナビゲータが開かれて、無事にSharePoint上のExcelに接続できた。あとはソースを選んで接続すれば作業が出来る。

Teams上のファイルも、SharePoint Online上で保存されてるので、これを利用すれば、複数名同時アクセス出来る環境で、なおかつ同一ソースにてPower BI上で解析が可能になる。また、Graph APIなどを使ってこのExcelファイルに読み書きするようなアプリを作れば、色々と社内アプリとしても開発が出来るのではないかと(例えばガントチャート用のタスク登録アプリなどなど)。

※なお、誤った資格情報で接続して保存、エラーで接続できずとなると再度接続しても誤った資格情報で接続しようとします。この場合は、以下の手順で保存してしまった資格情報を削除してからリトライしましょう。

  1. データタブのデータの取得をクリック
  2. データソースの設定をクリック
  3. ダイアログが出たら「グローバルアクセス許可」をチェック
  4. 色々URLが出てくるので該当のURLをクリックする
  5. 右クリック -> アクセス許可の編集をクリックする
  6. 削除をクリックしてOKをクリックすれば資格情報が削除され、再度ログイン出来るようになります。

図:無事にSPO上のExcelに接続完了

図:このURLがSPO上のExcelへの直リンク

図:組織アカウントでのサインインが必要

Googleスプレッドシートに接続

Google Workspaceを導入している企業であれば、Power BI DesktopからGoogleスプレッドシートに接続するのがもっとも低コストで最も手軽な手段になると思います。今回はtestdataを使って取り込んでみようと思います。

  1. testdataを開き、URLを取得する
  2. URL末尾のedit以下を削ってexport?format=xlsxを加えたURLにする
  3. Power BI Desktopを起動し、データの取得をクリックしてWebコネクタを選択する
  4. URLに2.のURLを入力して、OKをクリックする
  5. Webコンテンツへのアクセスが出たら匿名で接続をクリックする(組織内のみアクセス可の場合、Googleアカウントのログインが必要です)
  6. 取得できなかったといったエラーが出ることがありますが無視して継続します。
  7. シートが出てくるので、選択して読み込みをクリック
  8. Googleスプレッドシートのデータが取得できたのであとはレポートを作るだけ

もちろん更新を掛ければ最新のGoogleスプレッドシートのデータを取得してきてくれます。

図:Googleスプレッドシートに接続出来た

図:データでレポートを生成

REST APIと接続

Power BIは様々なデータソースを使えるものの、あらゆるウェブサービスに標準で対応してるわけではないので、未対応のサービスの場合、一旦CSVなどでダウンロードしてからデータソースとして接続といった手順を踏むのが定石です。しかし、ウェブサービスの中にはREST APIが用意されてるものも増えており、Access Tokenを使って、Power BIから直接データを取得させる事が可能です。

今回は、クラウド請求書作成サービス「Board」のデータをPower BIから取得してみたいと思います。OAuth2.0認証のような複雑な認証を要するサービスでは利用出来ませんが、kintoneやBoardのようなタイプのウェブサービスでは今回の手法で接続が可能だと思います。

Access Tokenの取得

まずはリクエストする為のAccess Tokenを取得します。

  1. Boardにログインする
  2. API設定を開く
  3. 新規トークン生成をクリックする
  4. 今回は単純に案件の取得とリストの取得の2つをチェック入れて、登録をクリックする
  5. APIトークンが生成される。この時にだけ表示されるので、大切にコピーして保存しておく
  6. APIキーも必要なのでここでコピーをしておく

図:APIトークンで使えるアクセス権限を選ぶ

Webコネクタで接続

Power BI Desktopを起動して、データの取得より「Web」を選んで接続をしてみます。今回はリストの取得をしてみたいと思います。

  1. データを取得をクリックし、その他 -> Webを選ぶ
  2. Webコネクタを追加する
  3. 詳細設定をクリックする
  4. Board APIのエンドポイント「https://api.the-board.jp」に加えて、案件リストの取得用の「/v1/projects」をつなげたものをURLとします。
  5. オプションとして、80件表示、created_at_gteqを加えて指定日以降のデータを取得するために「?response_group=large&per_page=80&created_at_gteq=2020-12-01%2000:00:00」をつなげる
  6. HTTP要求ヘッダーパラメータにAuthorizationを加えて、隣のボックスには「Bearer 」に加えて、取得したAccessトークンを入れます。Bearerの後ろに半角スペースがいるので注意。
  7. HTTP要求ヘッダーパラメータにContent-Typeを加えて、application/jsonを追加する(Content-Typeは一個しか追加できないので、複数必要な場合はカンマ区切りで入れるようだ)
  8. HTTP要求ヘッダーパラメータにx-api-keyを加えて、APIキーを追加する
  9. OKをクリックする
  10. リクエストが実行されて、Power Queryが起動し、リクエスト結果がクエリに表示されます。
  11. ファイル -> 閉じて適用をクリックして元の画面に戻る
  12. Power BIのフィールドにレスポンスデータが表示されるので、あとはこれを元にレポートを作成すれば完了。

図:Webコネクタでリクエストを構築

図:取得結果はPower Queryで表示される

Board APIは膨大なメソッドが用意されているので、リファレンスをよくみて、エンドポイントURL、リクエストヘッダ、オプションに何を指定すればよいのか?学習して取れるようにしておけば、自動でPower BIにて視覚化が可能です。

また、100件以上取得となるとページング処理が必要になるので、M言語を使ってのページング処理が必要になります。こちらのサイトが参考になると思います。個人的にはM言語勉強するよりもVBAでBoardからデータを取得して、それをPower BIに表示するほうが楽なので、以下のエントリーを参考に環境を構築しています。

VBAからBoard APIを使ってデータの入出力してみた

ビジュアルレポートの作成

標準で用意されてるビジュアルで気になったもの

マトリックス

Power Queryではいわゆるピボットテーブルは作成出来ませんが、ビジュアルスタイルでピボットを作成する事が出来ます。以下の手順で作成可能です。今回はクエリ実験のAccessファイルを読み込ませて、売上リストテーブルのデータを利用します。

  1. クロス集計前の素のデータをPower BIにデータソースとして読み込ませておく。
  2. 視覚化の中にある「マトリックス」があるので、クリックする
  3. 行に「商品名」を割り当てる
  4. 列に「支店名」を割り当てる
  5. 値に「売上金額」を割り当てる
  6. 同じソースを元に商品名+売上高による円グラフを追加したり、支店名による売上高の横棒グラフを追加すると良いでしょう。

クロス集計されたテーブル側の列や行をクリックすると、6.のグラフと連動し、動的に変化するようになり、解析が捗るようになります。

図:クロス集計とグラフは連動しています

マップのシェイプ

オプションの有効化

Power BI Desktopには標準でデータを地図にマッピングする機能が装備されています。3つ用意されていて、通常のポイントデータとして地図上にデータをマッピングする機能、地図の境界線に沿って塗り分ける地図、プレビュー機能をオンにして使えるマップのシェイプ機能です。マップのシェイプについては以下の手順でプレビュー機能をオンにする必要があります。

  1. Power BI Desktopのファイル -> オプションと設定 -> オプションを開く
  2. プレビュー機能の中にある図形マップのビジュアルにチェックを入れてOKをクリック
  3. Power BI Desktopを再起動する
  4. 視覚化の塗り分け地図の隣にマップのシェイプが表示されるようになります。

図:オプション指定することで使える機能

日本のマップを使えるようにする

ただし、デフォルトではこの機能でマッピング出来るエリアは一部の国のみで、日本などを使いたい場合には、TopoJSONという形式でカスタムマップを読み込ませなければなりません。手動で作るのは大変なので、shapefileを変換して生成し、Power BI Desktopに読み込ませるようにします。今回は日本の都道府県境のTopoJSONを使うので、データソースの側もエリア名は都道府県名を指定しておいてください。

  1. こちらのページにあるjapan.topojsonをダウンロードしておく
  2. Power BI Desktopでエリア名と値のレコードを入れたExcelファイルを用意しておき、データソースとして読み込ませる
  3. 視覚化からマップのシェイプをクリックする
  4. 場所として都道府県名を指定する
  5. 色の彩度に値を指定する
  6. アメリカの地図のままなので、視覚化の書式を開き、シェイプを開く
  7. マップの追加をクリックして1.のjapan.topojsonを指定する
  8. すると、値に応じて色がグラデーションで表示されて、地図にマッピングが施されます。

あとは色の指定など細かくカスタマイズすると良いでしょう。shapefileをTopoJSONに変換するにはTopoJSONにDBFファイル内の地理情報(都道府県名など)が格納されてなければならないので、MapShaperのようなサービスで国土数値情報のshapefileなどを変換して、Power BIに読み込ませても、Excelデータからのマッピングは出来ません。QGISなどのGISツールを使って、TopoJSONに変換してあげる必要があります。

図:関東だけを自動色分けでマッピングしてみた

図:ソースデータは至ってシンプル

カスタムビジュアル

Power BIには300を超える標準以外に第三者が作成し、MSの認定を受けて公開されてる追加のビジュアルスタイルが用意されており、これを利用する事で、Excelではできないような表現や、またそのビジュアルの内容が故にちょっと変わった利用法まで出来るようになっています。ここでは自分が気になったビジュアルを選んでみました。

Gantt (by Microsoft)

データソースを元にしてガントチャートを生成してくれる素晴らしいビジュアルスタイルです。通常のPower BIの使い方というよりも、ツールとしてビジュアルを使うスタイルになるので、データ解析というよりも業務改善に役立つのではないかと思います。

  1. ガントチャート用のテーブル化したExcelデータを用意し、Power BI Desktopに読み込ませる
  2. リボンより「その他の資格エフェクト」をクリックし、AppSourceからを選ぶ
  3. 検索から、Ganttで調べて、MS謹製のGanttという名前のビジュアルスタイルを選び、追加をクリック
  4. 視覚化の下のほうに追加されてるので、クリックして視覚化を追加
  5. 凡例には「ステータス列」を今回は指定
  6. タスクには「タスク列」を今回は指定
  7. 親には「プロジェクト名」を今回は指定(これでグループ化される
  8. 開始には「開始日」、終了には「終了日」の列を指定する(日付が空はNG)

これでガントチャートが生成されます。あとはこれを仕組み化し、データの追記や修正の為のUIをExcel側で持たせたり、複数名扱えるようにしたり、またデータの反映などを自動化しておけば、タスク登録&ガントビューという業務改善ツールに早変わりします。フィルタでステータス列の完了以外を表示するようにすると、現在残ってるものだけになるので、ノイズが減って尚よろしいのではないかと思います。

図:ガントチャート用データソース

図:ガントチャートが生成された

図:MS謹製なので日本語化されてるよ

Beyondsoft Calendar

データソースの日付および数値、そしてビジュアルに設定した最低値・最高値・中間値に基づくカラーリングにて、カレンダーヒートマップを作成してくれるビジュアルスタイルです。月表示のカレンダーで表示されるタイプで、例えば1日の労働時間集計や目標売上などの数値目標が達成できているかどうかなどを一意に確認出来るようになります。労働時間であれば所定動労時間を超えてる日とそうでない日がどれだけあるかなどを把握出来るので、労務管理にも役に立つでしょう。

  1. クエリ実験のAccessデータにある工数時間テーブルにPower BIを接続させる
  2. リボンより「その他の資格エフェクト」をクリックし、AppSourceからを選ぶ
  3. 検索から、Calendarで調べて、beyond calendarという名前のビジュアルスタイルを選び、追加をクリック
  4. 視覚化の下のほうに追加されてるので、クリックして視覚化を追加
  5. 視覚化のフィールドを開く
  6. Date Fieldには日付の列を指定する
  7. Measure Dataには工数時間を指定する
  8. 視覚化の書式を開く
  9. Data Colorsがあるので開き、Divergingをオンにする
  10. Maximum Colorは赤、Minimum Colorは青、Center Colorは緑を指定しました。
  11. 値設定なのですが、表示と設定が逆のようでMinimumが最大値で、Maxinumが最小値のようなので、Minimumは60分*10時間で600を指定、Maximumは60分とし、中央値を480として指定しました。
  12. 表示する月を絞る手段としてはフィルターを使うと良いですが、スライサーを追加すると便利なので、視覚化の中にあるスライサーをクリックして追加します。
  13. スライサーにフィールドから年と月だけを拾って入れます。
  14. スライサーの書式を開き、選択範囲のコントロールを単一にする。これで、スライサーで変更するとカレンダーの月移動がかかるようになります。

図:カレンダーを見るだけで既定値超えが一目瞭然

Radar Chart (by Microsoft)

データソースを元にレーダーチャートを生成するカスタムビジュアルで、これもMicrosoft謹製となっています。なぜ標準で装備していないのだろうか・・・データソースの作り方がちょっと癖があるので、そこだけは注意です。今回はRPGキャラの各種パラメータ比較をレーダーチャートで作ってみました。

  1. パラメータ表を元にPower BI Desktopにデータソースを読み込ませる
  2. リボンより「その他の資格エフェクト」をクリックし、AppSourceからを選ぶ
  3. 検索から、Radarで調べて、Radar Chartという名前のビジュアルスタイルを選び、追加をクリック
  4. 視覚化の下のほうに追加されてるので、クリックして視覚化を追加
  5. 視覚化の書式にて、カテゴリにパラメータ名列を指定
  6. 同様にY軸には各キャラクタの全部の列を追加します。

これでレーダーチャートが完成します。チャートの作成自体は簡単ですが用意するデータソースの構造が少し変わってるので、以下のスクショのようなスタイルでデータソースを構築するようにしましょう。

図:データソースの構造

図:無事に5つのパラメータでレーダーを作れた

Hierarchy Chart by Akvelon

作成方法

実務とりわけ総務などでよく利用するチャートとして「組織図」があります。異動や部の編成変更などの度に、例えばExcelのシェイプなどを使って手作業で時間を書けて作るのは正直スマートとは言えません。そんな組織図も一定のルールに基づいて作られたデータソースを用意しておけばデータの書き換えだけで、組織図のリメイクが完了します。

  1. Power BI Desktopに組織図データを読み込ませる
  2. リボンより「その他の資格エフェクト」をクリックし、AppSourceからを選ぶ
  3. 検索から、Hierarchyで調べて、Hierarchy Chart by Akvelonという名前のビジュアルスタイルを選び、追加をクリック
  4. 視覚化の下のほうに追加されてるので、クリックして視覚化を追加
  5. 視覚化のフィールド項目のidにはID列を指定
  6. 視覚化のフィールド項目のtitleにはname列を指定
  7. 視覚化のフィールド項目のsubtitleにはposition列を指定
  8. 視覚化のフィールド項目のparentにはparent列を指定
  9. 視覚化のフィールド項目のTypeにはtype列を指定
  10. それぞれの役職やレベルに応じて色を変えたい場合は、書式の中のtype color項目で変更可能
  11. また、それぞれのタイルの文字の大きさは、Nodesの中のtitle size項目で変更可能
データソースの構成ルール
  • ID列は部署やメンバー全員に重複しないユニークな値を指定(これが親番号になる)
  • name列には従業員名や部署名を入力する
  • parent列は対象者が誰にぶら下がるかを指定(IDを指定する
  • position列はサブタイトルで使うので入れなくても良い(通常は役職名を入れる)
  • type列は色分け用。社長、部署、役職、平社員にそれぞれの値をセットする
  • 複数名のparent列の値に同じ親IDを割り当てると、横一列に並ぶように表示される
  • 一方で縦長にしたい時は直下の人だけparentに親番号を指定し、以降の人はその人にぶら下がるようにIDを指定するようにする

あとはこのExcelデータを人事発令などで書き換える仕組みを用意すれば、瞬時に組織図の書き換えが可能になります。

図:組織図用のデータソースの構成

図:完成した組織図

Decision Tree Chart

作成方法

特殊な意思決定判断の為のチャートに「決定木」というものがあります。このチャートをデータソースからR言語を用いて解析しマッピングしてくれるカスタムビジュアルが「Decision Tree Chart」。このチャートを利用するには一定以上の変数が必要であり、そこにもルールが存在します。また、このチャートはR言語スクリプトが含まれており、利用するには事前にR for Windowsおよび追加パッケージのインストールが必要です。

今回のチャート描画の為のデータはmockarooにて生成しています。参考にしたサイトはこちらです。

  1. 事前にR for Windowsをインストールしておく必要があります。
  2. Power BI Desktopに分析用データを読み込ませる
  3. リボンより「その他の資格エフェクト」をクリックし、AppSourceからを選ぶ
  4. 検索から、Decisionで調べて、Decision Tree Chartという名前のビジュアルスタイルを選び、追加をクリック
  5. 起動時にスクリプトが含まれてると警告され、有効化するかどうか聞かれるので、有効化をクリックする
  6. 初回はR言語の追加パッケージを要求されるのでインストールする
チャート描画の手順

ここまでで、とりあえず描画の為の準備は完了したので、データソースから順番に列を追加してゆきます。

  1. Target Variableにはbikeの列を指定。この列は1か0の値だけで構成されていて、これをカテゴリ変数とよび、1が購入、0が購入しないという判定になります。
  2. 次にInput Variableに順番に次の変数をいれてゆきます。まずは、income列(年間収入)を追加する
  3. まだこの段階では、条件判定に変数が足りないので、更にdistance列(通勤距離)を追加する。これで描画はされるものの細かく枝分かれ過ぎてる状態
  4. さらにここに車の所有台数列であるcar列を追加すると、きれいな枝分かれで描画されます。

緑色ラベルほど購入確率が低く、青いラベルほど購入確率が高いという分析になるようです。ただこのチャートを深く理解するようにするには、決定木に関する十分な事前の知識が必要になります。

図:スクリプト実行確認ダイアログ

図:追加のR言語用パッケージ

図:実際にチャート化してみた様子

LiquidFillGauge

標準のビジュアルパーツにもゲージと呼ばれるものがあります。視覚化手段の一つとしてはちょっと変わったものになりますが、こういった視覚化の手段も時としては有効です。そんなパーツとして第三者が作成したものにLiquid Fill Gaugeと呼ばれるものがあり、これはMicrosoftの認定したものではないのですが、Githubで配布されています。

使い方は以下の手順です。

  1. Power BI Desktopを起動し、合計最大100になるようなタイプの列を持つデータソースを読み込ませる
  2. Githubの配布ページからliquidFillGauge.pbivizというファイルをダウンロードする
  3. リボンよりその他の視覚エフェクトをクリックし、自分のファイルからを選択する
  4. インポートをクリック
  5. 2.のファイルを指定する
  6. 視覚化に追加した視覚化のアイコンが出てくるので、クリックする
  7. ビジュアルに対して、1.のソースのvalue列を指定する
  8. ビジュアルが値を読み取って、最大100の値で読み取ってゲージ表示してくれる
  9. 視覚パーツの書式の中にあるTextの項目に最小値、最大値の設定があるのでこちらで値の表示をカスタマイズする

Microsoftのサイト以外でもこのようにビジュアルパーツが配布されてることがあるので、中身をよく見て利用してみるのも良いかと思います。

図:value列をビジュアルパーツに利用する

図:液体はアニメーション表示されます

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)