前提
定期的に取得するアンケートや、対象者が(ある程度)決まっているアンケートの集計にPower BI を用いると、データモデルさえ出来ていれば回答者数や回答数など簡単に集計することが出来ます。
一方で未回答の人に催促しようとした場合、未回答者の抽出や、まだ回答されていないアンケートをリストアップしようとすると、上記のように簡単にはいかないため、ひと工夫する必要があります。
名簿テーブル
ID | 氏名 |
---|---|
1 | A氏 |
2 | B氏 |
3 | C氏 |
4 | D氏 |
アンケート回答ステータス
アンケート名 | 回答者ID | 回答日 |
---|---|---|
職場改善 | 1 | 2022/1/12 |
職場改善 | 2 | 2022/1/23 |
満足度 | 2 | 2022/2/1 |
満足度 | 3 | 2022/2/2 |
データモデル
アンケート回答ステータス.ID → 名簿テーブル.ID
これを普通に可視化すると、未回答のD氏が出てこずに、こうなります。
氏名 | アンケート名のカウント |
---|---|
A氏 | 1 |
B氏 | 2 |
C氏 | 1 |
やりたいこと
未回答者にフォローアップしたいので、ゼロ件の人も抽出されなければなりません。
氏名 | アンケート名のカウント |
---|---|
A氏 | 1 |
B氏 | 2 |
C氏 | 1 |
D氏 | 0 |
過去一度も回答していない人の抽出
上記でいうとD氏
スライサーで設定した範囲で回答されていない人の抽出
2022/1/15 ~ 2022/2/15 で指定した場合、A氏とD氏
実装方法
Power QueryとDAXのどちらも実装出来そうですが、Slicerとの相性を考えてDAXで実装しました。
下記のメジャーを名簿テーブルに加えます(どこでもよいようです)。
回答数 =
VAR SumTotal =
CALCULATE(
COUNT('アンケート回答ステータス'[回答者ID]),
ALL('アンケート回答ステータス'[アンケート名])
)
RETURN
IF ( ISBLANK ( SumTotal ), 0, SumTotal )
回答者数というメジャーが出来るので、表なり値なりにドラッグ&ドロップすれば、未回答のD氏がリストアップされます。
アンケート名をSlicerに加えればさらにアンケート毎に未回答者を絞り出せます。
実現出来てみれば、0件をきちんと出せばよいだけなので、たいしたことないんですが、ちょいと苦労しました。