先日、気付きました
Power BI を使って初めてリアルタイムアンケートをやったのが、2017年の Power BI 勉強会 でした。未だに登壇やイベントでやると、なかなかに好評です。
最近はオンラインイベントが増えているので、QR コードを示して答えてもらったアンケート結果が Power BI ダッシュボード にリアルタイムに反映されていくのは、デモ映えが半端ないです。
で、2017年当時にブログにも書いたつもりだったのですが、先日ですね人に聞かれて自分でググったら、ブログ、書いてませんでしたwww
アンケートを即可視化!~MS Forms ⇒ MS Flow ⇒ Power BI~
https://www.slideshare.net/yugoes1021/ms-forms-ms-flow-power-bi-83167435
そう、SlideShare に当時使用したスライドはあるんですよ。
ただ、自分で見直したら、ちょっと内容が「うーん」って感じだったので、新ネタも追加して、2020年版を書くことにしました。
本題
ここからが本題です。(↑ の SliedeShare の方法を詳細に書いたものです)
アーキテクチャ
2020年版といっても、基本は2017年から変わりません。図としては各サービスのロゴが新しくなった感じ。
手順
手順はこんな感じです。
- アンケート項目を決める
- Microsoft Forms でアンケートを作る
- Power BI Serivce でストリーミングデータセットを作る
- Power Automate でフローを作る
- Power BI でレポートを作る
- テスト
では順にやってみましょう!
1. アンケート項目を決める
どんな内容が聞きたいのか?ということですが、新型コロナウイルス(COVID-19)のおかげでオンラインイベントが増えているので、オンラインイベントのセッション冒頭でやるアンケートを前提にしましょう。これは仕事でお客様向けに何かをやるときにも応用できますし、学生さん向けにやるときにも使えます。オンラインになって、オフラインと一番異なるのは、参加者の方がどこにいるのかわからないということ。それから属性もわからないわけです。仮に「開発者向け」と銘打っていても、非開発者の方がいるかもしれない。逆もまた然り。なので、冒頭でそういったことを聞いておくとよいと思います。
以上を踏まえて、私が必ず入れる質問は
- 今日はどこにいますか?都道府県名でお答えください(東京都、北海道、京都府、愛知県、など)
- 今どんなデバイスで参加されていますか?(PC、スマホ、タブレット、テレビ、ゲーム機、その他)
- あなたの職種は?(開発者、インフラ系エンジニア、アーキテクト、PM/PL、ビジュアルデザイナー、UXデザイナー、役員、営業、マーケター、業務担当者、など)
以上3点です。その他に、その日話すことのテーマについて、「使ったことがありますか?」などを聞いてみます。
例えば Power BI に関してならば、
4.Power BI をどれくらい使用していますか?(未経験者、初学者、中級者、上級者、忍者)
余談ですが、Ninja レベルというのは、最上級を表し、海外の方に言っても通じます。海外の方は忍者、大好きですよね。
2. Microsoft Forms でアンケートを作る
アンケート項目が決まったので、Forms でアンケートを作成します。
https://forms.office.com/ を開いてください。もちろん Power BI と Power Automate が使用可能なアカウントでサインインをします。
タイトルを付けてアンケート項目を作成していきます。初めてでもクリックして入力してと直感で触っていくとできてしまうと思いますので詳細の説明は省きます。
なお、アンケート項目を作る際に注意点があります。
Microsoft Forms ではアンケート項目の種類として以下のものが選べます。
- 選択肢
- テキスト
- 評価
- 日付
- ランキング
- リッカート
- ファイルのアップロード
- Net Promoter Score
このうち、リアルタイムアンケートをやるなら、以下のものだけにしてください
- 選択肢(単一選択のみ。複数回答はダメ)
- テキスト
- 評価
- 日付
- Net Promoter Score
理由は簡単で、アンケートを集計する際に、1問につき複数の回答があると、カンマ区切りで繋がった文字列になるので、集計がちょっと面倒です。
できなくはないんですけど、最初からやろうとしない方がいいです。
またファイルのアップロードは使いたくなりますが、同一組織内でアンケートをやるなら使えますが、
共有で外部のユーザーにアンケートを公開する場合は、ファイルのアップロードが使えないので、今回のシナリオでは使えません。
アンケートが出来上がったら、共有の設定が必要です。
画面左上の [共有] から開いた画面で [リンクにアクセスできるすべてのユーザーが回答可能] を選択してください。
なお、会社や組織内部でやる場合は [自分の所属組織内のユーザーのみが回答可能] を選びましょう。
オンラインイベントの場合、スライドに URL と QR コード を入れると思うので、
URL はコピーしてテキストに張り付け、 QR コード はダウンロードしておくとよいですね。
次に設定です。[・・・] から [設定] を開きます。
必要な個所を設定してください。
[回答を受け付ける] は必須です。
[開始日] は回答可能な開始日時を指定できます。設定しない場合、今この瞬間から回答可能です。
[終了日] はいつまで回答できるかを指定できます。設定しない場合、ずーっと回答可能です。オンラインイベントの場合はイベント終了日時を指定することをオススメします。
[お礼のメッセージをカスタマイズ] はデフォルトだと 「回答が送信されました。」 のみなので、プラスアルファでメッセージを付けた方がフレンドリーですね。絵文字を入れてあげると、フレンドリー感が増します。また、その後にアクセスさせたい URL を埋め込むことも可能です。
これで Forms アンケートは OK です。
3. Power BI Serivce でストリーミングデータセットを作る
続いて Power BI Service ( https://app.powerbi.com/ )にアクセスします。
ストリーミングデータセットを作成したいワークスペースを開いて、[+新規] から [ストリーミングデータセット] をクリックします。
ストリーミングデータセットの名前と列を定義します。
データセット名はわかりやすいものがよいでしょう。私はアンケート名をそのまま付けます。
[ストリームからの値] は列定義です。基本はアンケートをわかりやすい列名にすればよいのですが、
回答日時も必要なので、私は忘れないように最初に [日時] という列を [日時型] で作ることにしています。
アンケート項目に対応する列は以下の通りです。
- 都道府県(テキスト)
- デバイス(テキスト)
- 職種(テキスト)
- 経験(テキスト)
なお、もしアンケート項目に数値で回答がされるものがあれば、[数値型] を選んでください。
そして忘れてはいけないのが [履歴データの解析] を必ず [オン] にしてください。これを忘れるとレポートが作成できません。
ここまできたら、[作成] をクリックしてください。
この画面では特に何もすることはないので、[完了] をクリックで OK です!
4. Power Automate でフローを作る
Power Automate で Forms の回答が送信されたら、Power BI のストリーミングデータセットにデータを登録するフローを作ります。
https://flow.microsoft.com/ を開きます。
[作成] から [自動フロー] をクリックします。
[フロー名] にわかりやすい名前を付けます。私はアンケート名を入れておきます。
"forms" と検索して Microsoft Forms の 新しい応答が送信されるとき を選択して [作成] をクリックします。
[フォーム ID] で今回作成したアンケートフォームを選択します。
[+新しいステップ] をクリックします。
次にストリーミングデータセットに設定する [日時] を作成します。
"日時" と入力して検索し、[現在の時刻] をクリックします。
これでこのフローが動いたときの現在日時が取得できます。ただ、取得できる日時は UTC なので、これを JST に変換します。
[+新しいステップ] をクリックします。
再度 日時 と入力します。
[タイムゾーンの変換] をクリックします。
[基準時間] にカーソルを置くと、右側に動的コンテンツを追加するためのウインドウが開きます。
[現在の時刻] をクリックします。
[変換元のタイムゾーン] に (UTC)協定世界時
[変換先のタイムゾーン] に (UTC+09:00)大阪、札幌、東京
と選択します。
[書式設定文字列] で [カスタム値の入力] をクリックします。
"yyyy-MM-dd HH:mm:ss"
と入力してください。
[+新しいステップ] をクリックし、"forms" と入力し、検索します。
[応答の詳細を取得する] をクリックします。
[フォーム ID] でアンケート名を選択し、[応答 ID] にカーソルを置いて、右下に開いたウインドウで [応答通知の一覧 応答 ID] をクリックしてください。
[+新しいステップ] をクリックし、"Power BI" と検索、[データセットに行を追加します (プレビュー)] をクリックしてください。
[ワークスペース] はご自身のストリーミングデータセットを作成したワークスペースを
[データセット] は作成したストリーミングデータセットの名前を
[テーブル] は "RealTimeData" を選択してください。
なお、テーブルはストリーミングデータセットの場合、必ず "RealTimeData" になります。
ここまで選択すると、列定義が読み込まれ、下に列名が表示されます。あとは該当の項目を対象の列に設定していくだけです。
[日時] には [変換後の時間] を設定します。
ここから各アンケート項目を設定します。
[都道府県] には [今日はどこにいますか?~] を設定します。
[デバイス] には [今どんなデバイスで参加されていますか?] を設定します。
[職種] には [あなたの職種は?] を設定します。
[経験] には [Power BI をどれくらい使用していますか?] を設定します。
最終的にこのようなフローになります。最後に [保存] することを忘れないでください
はい、これでフローは完成です。
5. Power BI でレポートを作る
再度 Power BI Service に戻り、レポートを作成するのですが、レポートを作るにあたって、何件かデータが入ってないと作りづらいので、先に Forms に戻ります。
画面右上の [プレビュー] をクリックしてください
そうするとプレビュー画面に変わるのですが、ここから試しに回答することができます。
また右上で PC で見た場合と スマホ で見た場合の切り替えが可能です
このプレビュー画面で3回ほど適当に回答してください。
ちなみに Power Automate のフローを見ると、正常に動作したか確認することが可能です
もし何かエラーが出ていたら、この時点で Power Automate を確認して修正してください。
さて、Power BI Service に戻って、作成したストリーミングデータセットがあるワークスペースを開きます。
そして該当のデータセットの [・・・] - [レポートの作成] をクリックします。
白紙のキャンパスが表示されます。
ここからはレポートを作成したことがある人はいつも通りに作成していただければ OK です。
作成したことがない人向けにちょっとだけ続きを書いていきます。
リアルタイムアンケートとしてわかりやすく結果を表示したいので、まず欲しいのは回答者の件数です。これはユニークなものを数えてそれをカードに表示すればよい。
ユニークなもの?何かあるかな。。。あるんです、そう [日時] です。Power Automate で現在日時を変換した際に秒(ss)まで書式設定で指定をしてあります。ということは秒までデータがあります。厳密には秒が被ることはあります。が、可能な限りユニークに近いものです。ということでカードを選択し、日時をカウントします。
日時がそのまま表示されているのでこれをカウントに変えます。
[フィールド] で "最も古い 日時" と表示されている右側をクリックします。
本当にユニークな値なら "カウント(一意の値のみ)" なんですが、秒が被ることもあるので、[カウント] をクリックします。
カードの下に日時のカウントって出ているのはダサいので、[名前の変更] で "回答者" と変えておきます。
カードのサイズは適切に変えておいてください。
次は都道府県があるのでマップに表示しましょう。
マップを選んで、都道府県を [場所] へ、日時を [サイズ] へ設定してください。
マップは誰が見ても地図なのでタイトルは不要です。タイトルを消すには [書式] を選んで [タイトル] をオフにします。
次はデバイスと経験は選択肢が5個と6個なので、円グラフで表示してもギリギリ問題ないでしょう。
(円グラフやドーナツグラフは割合を表すのよく使われますが、凡例として最大 5 個までにするのが推奨です)
デバイスの円グラフを作ります。
タイトルを変更します。[書式] を選んで [タイトル] を開いて、"デバイス" のみにします。
凡例のタイトルも不要です。 [凡例] を開いて、[タイトル] をオフにします。
経験の円グラフは、デバイスの円グラフをコピーして作ります。デバイスの円グラフを選択した状態で Ctrl + C でコピーして Ctrl + V で貼り付けます。
次に [凡例] から [デバイス] を削除して [経験] に変えます。
タイトルを経験に変えておきます。
コピーをして必要最小限の変更で経験の円グラフができました。
最後は職種です。職種は種類が多く、また自由入力も可能なので、円グラフには向きません。
こういう場合は [集合横棒グラフ] を使って、割合ではなく人数の多さを順位で表現しましょう。
グラフの [X 軸] と [Y 軸] のタイトルは不要なのでオフにします。
できたら、画面右上の [保存] ボタンで保存してください。
レポートに名前を付けます。
最後にレポートの各ビジュアルをダッシュボードに [ピン留め] します。
Power BI ではレポートを表示している際にデータが更新されても(今回の場合だとアンケートで新たな回答があっても)レポートの表示は更新されません。理由は Power BI ではレポートは分析する場所だという前提があるからです。分析している最中にデータがころころ変わったら、とても分析なんてできたもんじゃありません。データセットが更新された際にそれに応じて動くグラフが表示できるのはダッシュボードです。なので、各ビジュアルをダッシュボードに [ピン留め] する必要あるのです。
ビジュアルをダッシュボードに [ピン留め] するには、ビジュアルの右上にマウスを持って行くと [ビジュアルをピン留めする] というボタンがあるので、これをクリックします。
最初のビジュアルをピン留めする際はまだダッシュボードがないので、[新しいダッシュボード] を選択し、ダッシュボード名を入れて、[ピン留め] をクリックします。
2つ目のビジュアルからは [既存のダッシュボード] を選択してください。
これをすべてのビジュアルについて繰り返してください。
作成した [ダッシュボード] に移動するとこんな感じにビジュアルがピン留めされています
ダッシュボードにピン留めされたビジュアルのことを [タイル] と呼びますが、タイルの位置とサイズはドラッグ&ドロップで調整することが可能です。
綺麗に調整するとこうなります。
この状態で Microsoft Forms からアンケートに回答してみてください。
いかがでしょうか?データが1件増えて、ビジュアルが更新されましたか?
更新されたら成功です!
最後にデータの整理です。
テストデータが既に4件登録されているので、実際これを使う当日既にデータが登録されていると気になりますよね?
ご安心ください。レポートで対象データを常に当日(今日)に絞り込んでしまえば、OK です。
レポートに戻ります。簡単にレポートに戻るには、ダッシュボードで任意のタイルをクリックします。
さてレポートに戻ったら、鋭い方は気付いたかもしれません。そう、回答者数が 3 になっているのです。これがこのストリーミングデータセットから作成されたレポートでは自動的に更新がされないことがあるということです。気になる方は、画面上部 [お気に入り] の右にある [・・・] - [更新] をクリックすると、最新化されます。
当日のみで絞り込むにはレポートを編集モードにする必要があります。[編集] をクリックしてください
画面右側の [このページでのフィルター] に [日時] をドラッグ&ドロップします。
次に [フィルターの種類] を [相対日付] に、[次の値の時に項目を表示:] を [現在の] [日] にして、右下の [フィルターを適用] をクリックしてください。
こうすることでレポートには今日のデータのみ表示されるようになりました。
ただ残念なことがひとつあります。フィルターはダッシュボードへビジュアルをピン留めする際のフィルターが適用される仕様になっているので、先ほどピン留めした時はフィルターが適用されていなかったのでダッシュボードへのピン留めはもう一度やり直す必要があります。ピン留めをもう一度行うと、ダッシュボードには各ビジュアルのタイルがダブって表示されることになります。前に張り付けたやつを削除してください。もしダブってどれを削除すればよいかわからないという際には、先にダッシュボードからタイルをすべて削除してから、ビジュアルのピン留めを行ってください。
「先に言えよ!」って思ったあなた。実はこの仕様を身をもって体験していただくために、わざとこの順序で書かせていただきました。
先に言ってしまうと、おそらく理解度はグッとさがってしまうからです。あしからず。
ダッシュボードでタイルを削除する場合は以下の画像のように右上の [・・・] から [タイルの削除] です。
最後に
はい、ということで、これですべて終了です。
いかがでしたでしょうか?
説明すると長いのですが、これ、実際作業をすると、アンケート項目が決まっている場合は 20 分くらいで作れちゃいます。慣れると 10 分くらいです。
そう、いったん理解してしまえば、なんてことはありません。間違っても手順を覚えようとしないことです。
覚えたことは忘れますが、理解したことは決して忘れません。
また、クラウドサービスは画面がどんどん変わっていきます。
覚えている人はちょっと画面が変わると、すぐ使えなくなりますが、理解している人は
「あれ?変わった??あ、なーんだ、そういうことか」
という感じで付いていけます。
願わくば、みなさんが 理解されようとしていることを心より願っております。
最後まで読んでいただきありがとうございました。また気が向いたら、Power BI Tips シリーズ書きます。
気が向いたので、この続きを Vol.2 として書きました
https://qiita.com/yugoes1021/items/ef963bc81ec18e83d735
皆様からのリクエスト、お待ちしております。
何かリクエストがあれば、以下までー🤗
Twitter: https://twitter.com/yugoes1021
Facebook: https://www.facebook.com/yugoes1021
LinkedIn: https://www.linkedin.com/in/yugoes1021/