今回は、Power BIでのトルネードチャートの使い方を解説します。
トルネードチャートって難しい風に聞こえますが、ピラミッドみたいなこれです。
割合表示を正と負の方向にそれぞれ向けるそれなりに目を引くチャートですね。
マスターして周りをあっと言わせたいところですね!
(Micorosoft Appsourceより)
では早速、その使い方について。
今回は、値を数値の合計ではなく、パーセンテージにします。
1.ビジュアルのインポート
Power BI Desktop標準のビジュアルにはトルネードチャートはありません。
そのため、自分でインポートをする必要があります。
ビジュアル最下部の「・・・」から「その他のビジュアルの取得」から、「Tornado chart」をインポートしてください。
※無料版でサインインしないまま使っている方は、「その他のビジュアルの取得」が使えませんが、Microsoft公式のAppsourceからzipファイルをダウンロードし、「ビジュアルをファイルからインポート」することで同様のものを利用できます。
私はビジュアルの発行元が知らない企業だとなんとなくインポートを躊躇してしまうタイプです。
ですが安心。「Tornado chart」はMicrosoft公式のビジュアルです。
2.データの準備
さて、公式のチュートリアルやサンプルでは、あらかじめ凡例やパーセンテージなどが用意されたデータがあります。
ですが、私は集計もされていない生データを加工して、パーセンテージで正負の表現がしたいのです。あくまでも、容易すすのは生データで、データ加工も含めてPower BI上で行いたいのです。(多少、生データを整えてからインポートすることもありますが・・)
正負で回答者数を表示することは比較的容易ですが、それをパーセンテージにするところで私ははまりました。
生データは以下のようなアンケート結果という想定です。
※アンケート回答データには他の列も存在しますが、すべて削除していますので、不要な列がある場合には、まずはPower Query上で対象とした列をすべて削除してください。
回答者ID | 教養科目 | 英語科目 | 専門科目 | 実験科目 | 卒業科目 |
9f86d081 | 満足 | 満足 | 満足 | 満足 | 満足 |
6b86b27 | 満足 | 満足 | 不満 | 不満 | 不満 |
d4735e3a | 不満 | 不満 | 不満 | 満足 | 満足 |
4e074085 | 満足 | 満足 | 満足 | 満足 | 不満 |
Power Queryで以下のように加工し、その後DAX関数でパーセンテージの列を作成します。
はじめに、Power Queryの全体像はこちらです。順に解説します。
1.「ソース」「ナビゲーション」「昇格されたヘッダー数」「変更された型」はデータを読み込んだ時点で自動挿入されていますので、そのままでも構いません。
2.「選択した列のみをピボット解除」は、「回答者ID」以外の列を選択した状態で、右クリックするとオプションが出ます。
ピボットを解除したあとは、このようなデータに変換されます。
3.「グループ化された行」については、上部メニュー「ホーム」タブ内の「グループ化」で実現します。
「グループ化」を押すと以下のようなポップアップが出ます。
今回は「満足」「不満」ごとに集計することが目的です。(トルネードチャートのプラス方向に「満足」マイナス方向に「不満」を示したい)
デフォルトでは「基本」が選択されているので、このままではグループ化が1列でしかできないため「詳細設定」を選び、「グループ化の追加」から「値」も選択します。
「OK」を押すと、以下のようなデータに変換されます。
3.DAX関数によるメジャーの作成
続いて、パーセンテージの列が必要なので、新しいメジャーを以下のコードで作成します。
ここではデータを「tornado」としてインポートした想定なので、適宜名前を書き換えてください。
Percent =
DIVIDE(
CALCULATE(SUM(tornado[カウント])),
CALCULATE(
SUM(tornade[カウント]),
ALLSELECTED(tornado[値])
))
4.ビジュアルの作成
データの準備ができたら、完成間近です!
以下の通り、データを当てはめます。
- グループ:属性
- 凡例:値
- 値:Percent
タイトルや色などをお好きなものに変更すれば、完成です!
属性の表示順を入れ替えたい場合には、別記事(後日作成予定)をご確認ください。
おわりに
いかがだったでしょうか?
単純に、積み上げ棒グラフでパーセンテージの内訳を示すことも可能ですよね。
少しでも目を引くようなレポートを作成するための1つの工夫として使えるのではないかと思いました!