QuickSight でビジュアルのグループ条件をコントロールで切り替えれるようにしてみた

2023.09.08

いわさです。

Amazon QuickSight で棒グラフなどのビジュアルを表示する際に、グループフィールドへメイン以外のディメンションを追加することでクラスターあるいは積み上げ表示を行うことが出来ます。
今回ダッシュボード化した際にユーザーがグループフィールドを切り替えれるようにしてみました。また、凡例の表示・非表示方法についても考察しています。

前提のデータ

まず前提として、次のようなデータセットを取り扱います。
ユーザーごとに登録日といくつかの属性値が設定されています。

上記データを使った棒グラフで、ディメンションに「登録日」を、メジャーに「ユーザーID」(カウント)を指定するとデフォルトでは次のようになります。

登録日ごとのユーザー数が可視化されています。
さらに各日付ごとにどういった属性のユーザー割合なのかを確認したい場合に追加のディメンションを設定することが出来ます。

属性を指定してグループ化

ここで、フィールドウェルの「グループ」に追加のディメンション「属性A」を設定してみると、登録日ごとのユーザー数の中で属性Aの値に応じてグルーピングされ色が設定されています。
これで属性Aの割合を可視化することが出来ました。

ではここで属性Bの観点でも確認したい時はどうすれば良いでしょうか。

方法のひとつとして次のようにグループフィールドとして追加のディメンションフィールドを追加することが出来ます。
フィールドをぐぐっと持っていくと「ドリルダウンレイヤーの追加」というテキストが表示されるのでそこに配置します。

そうするとフィールドウェル上でグループフィールドを切り替えることが出来るようになっています。
次の状態は属性Bが白抜き状態なので、属性Aでグループ化されている状態です。

ここで属性Bを選択すると属性Bでグループ化されるようになります。

良い感じですね。
ただし、フィールドウェル上でのフィールド切り替えは分析上で行うことが出来るものなので管理者・作成者のみが操作可能で、分析にアクセスできずダッシュボードへのみアクセス可能な閲覧者はフィールドウェルの操作ができません。

ではどうなるのかというと、ドリルダウンレイヤーが追加された分析をダッシュボード化すると閲覧者は次のようにビジュアルメニューから「ドリルダウン」「ドリルアップ」の操作が出来るようになります。
次の操作を行うと属性Aからドリルダウンされます。現在の状態であれば属性Bでのグルーピングに切り替わります。

切り替わりましたね。
ここでドリルアップを行うと属性Aに切り替わり、ドリルダウンレイヤーが更に(例えば属性Cなどが)追加されていれば追加のドリルダウンが出来るようになります。

標準機能で満たせるので使いやすいのですが、ドリルダウン・ドリルアップという名称もそうですが上記操作からは切り替えた先の情報が含まれていないので親子関係のないレイヤー間の移動となるとなかなか使い勝手が悪いです。
切り替えてみるまでどのレイヤーになるかわからない状態になります。

よくある、都道府県→市区町村とか、年→月→日のような親子間のレベル変更ではなく、今回のような無関係の複数の属性で切り替える場合はあまり良くない気がしますね。

コントロールで切り替えれるようにしてみる

そこで、今回はコントロールを使ってグループフィールドを切り替えれるようにしてみました。
実装にあたって次の記事を参考にしています。

上記記事では日付粒度の切り替えをドリルダウン機能ではなくコントロールのドロップダウンから切り替え出来るようにしています。これとても良いテクニックだと思うんですよね。
今回はこちらをを応用しX軸ではなくグループフィールドでも切り替えれるようにしました。

流れは同じで、個別のフィールドではなくて計算フィールドをグルーピング用のフィールドに使います。
計算フィールドではユーザーの選択に応じた動的な切り替えを行うためにパラメータを参照しています。

パラメータ追加

まずはパラメータを追加します。
データタイプに少し注意が必要ですが、今回は簡単なサンプルデータのため属性値が全て文字列です。
そのためパラメータも文字列値にしています。

計算フィールドでパラメータを使う場合はデフォルト値の設定が必要になりますのでご注意ください。

コントロール追加

上記で追加されたパラメータを閲覧者が編集操作出来るようにするため、コントロール化します。
追加されたパラメータのコンテキストメニューから「コントロールを追加」を選択します。

適当な名前をつけてコントロールを作成します。
スタイルも好きなものを使って問題ないのですが、特定の値を予め定義しておきます。ここでは属性Aから属性Cまでを切り替えるために一覧スタイルでA~Cの値を設定しました。
後ほどこの値を使って計算フィールドで条件式を記述します。

ここはオプションですが、コントロールは「シートに移動」機能でビジュアルと同じくシート上への配置を行うことが出来ます。
リスト選択だと個人的にはこちらのほうが使いやすいのでシート上に配置しました。

計算フィールド追加

ユーザーがコントロール出来るパラメータが作成出来たので、こちらを使った計算フィールドを作成しましょう。
ファイルメニューの下のプラスボタンから「計算フィールドを追加」メニューを押下します。

計算フィールドは次のように設定しました。
コントロールでAを選択した際には属性Aフィールドの値を、Bを選択した際には属性Bの値を、Cを選択した際には属性Cの値を表示するようにしています。
上記以外の場合は固定値として NULL を表示するようにしています。

計算フィールドを使う

最後に、フィールドウェル上で配置済みの固定のディメンションフィールドを削除し、次のように計算フィールドを配置しましょう。
コントロールで A を選択している場合は属性 A でグルーピングされていますね。

コントロールで B を選択すると属性 B でグルーピングされました。良いですね。

コントロールで「すべて選択」を選択すると次のように全て同じ固定値(NULL)になるのでグルーピングされずに表示されます。

一点注意事項があって、単一の固定値を使った場合も凡例が表示されてしまいます。
そもそもビジュアルに凡例を表示しない設定にしている場合はこのままでも良いかもしれないですが、ビジュアルのツールチップ上などにも表示されていますのでこのあたりが少し気になりますね。

凡例の切り替えは出来ないのでビジュアル自体の切り替えで対応

この「すべて選択」時だけ凡例を表示しないようにしたいのですが、結論からいうと現時点の QuickSight の仕様ではそういった便利な機能がありません。
凡例はビジュアルフォーマットの編集から次のエリアで表示の切り替えが出来ます。

ただし、固定での ON/OFF のみがサポートされており、パラメータなどでの切り替えが出来ません。
QuickSight はパラメータ使えるシーンがもっと増えると、カスタマイズの幅が広がるので今後のアップデートに期待したいところです。

ビジュアル切り替え

本日時点の代替案としてはビジュアル切り替えを行うテクニックを採用することが出来ます。
QuickSight ではパラメータ条件に応じてビジュアルの表示・非表示を切り替えることが出来ます。今回であればグルーピングが有効なビジュアルと、そもそもグループフィールドが設定されていないビジュアルの 2 つを用意して重ね、表示・非表示を切り替えることで対応することが出来ます。

ブログでは次の記事などでその方法が使われています。

注意点としては複数のビジュアルを管理する必要が出てくるという点でしょうか。
二重管理に近い形になるので、分析やダッシュボードのメンテナンスを行った際は更新忘れのないようにしなければなりません。

パラメータのカスタム予約値を設定する

今回は「すべて選択」を条件にしたいので、「すべて選択」時の値を判定する必要があります。
これを行うため、パラメータの高度な設定でカスタム予約値を設定する必要があります。

予約値の詳細はこの記事では触れませんので、次の記事を参考にしてもらえると嬉しいです。

フリーフォーム化

フォームの重ね合わせと、ルールに基づく表示・非表示を切り替える前提条件としてシートレイアウトが「フリーフォーム」である必要があります。
QuickSight の設定からシートレイアウトを変更してください。

シートレイアウトについてもこの記事では詳細に触れません。次の記事を参考にしてもらえると嬉しいです。

表示・非表示ルールの作成

フリーフォームモードだと、ビジュアルのフォーマットから「条件付きルール」を設定することが出来ます。
既に作成済みのグループ機能を持ったビジュアルは、パラメータの値が ALL の場合は非表示になるようなルールを設定しましょう。

続いてビジュアルメニューからビジュアルを複製して、グループフィールドが設定されていないビジュアルを作成します。

複製・変更したフィールドを先程のビジュアルの上に重ねて、同じように条件付きルールを設定します。
ルールは先程とは逆に ALL 以外の場合は非表示としています。

コントロールで切り替えを行うと次のような表示になると思います。
非表示のビジュアルは分析上だとこのように表示されます。

ダッシュボードから確認

ただし、分析ではなくダッシュボードに共有して確認してみると期待した動作になると思います。
「すべて選択」を選択した場合は次のように表示されます。凡例も表示されていないですし、ツールチップ上も不要なダミー値が表示されていないはずです。

「すべて選択」以外の選択した場合は次のようにグループ化されて表示されていますね。

さいごに

本日は QuickSight でビジュアルのグループ条件をコントロールで切り替えれるようにしてみました。

目的のビジュアル自体は作成出来そうですね。
課題としては二重管理が必要になってしまう点ですね。あまりやりたくないな。
とはいえ標準のドリルダウンのみだと足りていない場合もあるので計算フィールドとパラメータを使ってフィールドウェルに介入したいシーンは結構ある気がします。

凡例の切り替えとか、フィールドウェルにパラメータで介入出来るようになると色々な要件にも柔軟に対応しやすくなるので今後のアップデートにも期待したいです。