「複数回答可能」と設定しているアンケート項目の回答を、項目ごとに集計したい
Webフォームでのアンケートで「複数回答可能」と設定している(=ラジオボタンではなくチェックボックス)ものは、フォームの管理画面や回答をエクスポートしたものには「回答1,回答2,回答3……」や「回答1;回答2;回答3……」のように、カンマやセミコロンなどで区切られた状態で1つのレコードとして記録されることが多いようです。
そのような回答を含むデータソースからTableauのVizを作る際に、「「回答1が○票」「回答2が○票」のように回答の項目ごとに集計したいけどどうすればいいか?」という質問をいただきました。
「カスタム分割」と「ピボット」で実現可能
1つのレコードがカンマやセミコロンで区切られているなら、TableauのCreator諸兄はまず何を思い浮かべるか、そう「カスタム分割」ですね。


「Tableau 複数回答 アンケート」で検索をすると、【アンケートデータ可視化】データ加工をやってみた ~Tableau Prep編~や【tableau】アンケートの複数回答を集計するためのデータ加工方法(Tableau Prepを使った加工)のように、複数回答のフィールドにカスタム分割を行い、その後にピボットを行う手法が紹介されています。
「カスタム分割」と「ピボット」を組み合わせる場合の制限
上記の手法ではTableau Prep Builderを使える環境である前提で書かれてあり、Tableau Desktop Public Editionのみ(または、ライセンス面ではTableau Prep Builderを使えるけど、Tableau Desktop縛りプレイを余儀なくされている場合)では実現できません。
Tableau Desktopでは、「データ」→「サーバーにパブリッシュ」or「保存されたデータ ソースへの追加」or「CSVへのデータのエクスポート」を行って仕切り直せば、「ピボット」を行うことも不可能ではありませんが……データソースが更新されるたびにデータのエクスポート作業を行うことは現実的ではありません。
また、そのアンケートの複数項目の選択肢が多い場合にも制限があり、MKの環境で試したところ一度にカスタム分割できる項目は「Tableau Desktopで最大10項目」「Tableau Prep Builderで最大26項目」でした。

そんな選択肢が多いアンケートは普通は作らないんじゃ?

「このバンドの好きな曲」みたいなアンケートだとあり得るハナシ(フラグ)
そうだ、計算フィールドで何とかしよう

以前ブログ上で触れていますが、TableauにはCONTAINS関数という文字列関数が用意されています。
たとえば、Googleフォームで「Tableau製品群の中で使ったことがあるものは?」という複数回答の設問(フィールド名: Tableau製品群)があり、回答項目として
- Tableau Desktop
- Tableau Desktop Public Edition
- Tableau Prep Builder
- Tableau Cloud
- Tableau Server
- Tableau Reader
- Tableau Mobile
- Tableau Pulse
といったものがあるとします。
MKの場合だと「Tableau Desktop」「Tableau Desktop Public Edition」「Tableau Prep Builder」「Tableau Cloud」「Tableau Server」「Tableau Reader」が該当しており、Googleフォームの回答収集では、「Tableau Desktop,Tableau Desktop Public Edition,Tableau Prep Builder,Tableau Cloud,Tableau Server,Tableau Reader」というカンマ区切りの値として格納されます。
Tableau側で計算フィールドを作り、
IF CONTAINS([Tableau製品群],"Prep")
THEN 1
END
のように設定すれば、MKの回答の「Tableau Desktop,Tableau Desktop Public Edition,Tableau Prep Builder,Tableau Cloud,Tableau Server,Tableau Reader」には「Prep」が含まれているので、1が返ってくるという寸法です。
あとは、同じようにTableau CloudやTableau Serverや……という感じで、回答の項目の分だけ計算フィールドを作り、メジャーバリューでグラフ化すればOKです。
文字列が重複する場合の注意点
ただし、今回の例で
IF CONTAINS([Tableau製品群],"Desktop")
THEN 1
END
のような計算フィールドを作るとどうなるでしょうか。
MKの回答の「Tableau Desktop,Tableau Desktop Public Edition,Tableau Prep Builder,Tableau Cloud,Tableau Server,Tableau Reader」には「Desktop」が含まれているので、1が返ってくる、というのは先ほどと同じです。
ただ、その返ってきた1は「Tableau Desktop」の回答なのか「Tableau Desktop Public Edition」の回答なのかの区別は付かないので、明確に分けたい場合には、「Tableau Desktop」の項目名を「Tableau Desktop(有償版)」などに設定して、Public Editionとは別に集計できるように工夫が必要です。
ここからはTableauのTipsに便乗した推し語り
このセクションからは、CONTAINS関数の解説にかこつけてMKが激推しのバンド語りをするので、Tipsだけを知りたい方は回れ右でも構いません……が、せっかくなのでお付き合いください。

世間一般的には「ヴィジュアル系ロックバンド」として扱われている(と思う)「-真天地開闢集団- ジグザグ」というバンドがあります。
推しポイントを挙げるとキリがないのでざっくり言うと「ヴォーカリストの見た目がちょっと独特だけど、詞と曲と演奏と唄と映像とがどれもハイクオリティ、あと振れ幅がすごい」のです。
そのため、まだ参拝者(ファンのこと)ではない方におすすめしようにも、デカい振れ幅のある楽曲群の中から何を選べばいいのかとても悩みます。
また、公式YouTubeにて公開されている楽曲の映像が、ショート動画を除いたフル尺のものに限定しても60本(2025年6月1日現在)という数に上るのも、悩みに拍車をかけるのです。
さらに、60本ある動画の中には同じ楽曲の異なる禊(ライブのこと)のものが存在しており、「あっちの禊のバージョンもいいけど、こっちの禊のバージョンも捨てがたい……」という悩みもあり得ます。
-真天地開闢集団- ジグザグ「参拝者の御推薦音源」アンケート
ということで、これは参拝者の皆様にも是非投票いただき、それをCONTAINS関数で可視化してはどうか!と思い立ちました。
前述のとおり、この記事の執筆時点で60本の公式楽曲動画があるので、Goolgeフォームにも複数選択の設問で60項目のチェックボックスを用意しました。
……ということは、Tableau Prep Builderのカスタム分割を駆使しても対応できない項目数になるので、CONTAINS関数で対応するしかありません(計算フィールドも60個作成するハメになりましたが……)。
勝手に思い立って勝手に苦労しているだけではありますが、がんばって作ったので参拝者の皆様は是非御投票いただけますと幸甚でございます。
また、「まだ参拝者じゃないけどちょっとアンケートを覗いてみるか」という心優しい御方には、アンケートから各公式YouTube動画にリンクしていますので、視聴してみて「良かった」と思う楽曲に投票いただけるとこれまた幸甚でございます。

「「このバンドの好きな曲」みたいなアンケート」のフラグ回収……っ!
コメント