[アップデート] QuickSight のパラメータ「すべて選択」に対して予約値を設定する機能が追加されていました

2023.01.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

QuickSight ではフィルター用のコントロールをダッシュボードに配置し、パラメータを経由することで絞り込みや条件の設定など様々な用途で活用することが出来ます。

先日このパラメータに高度な機能として予約値を設定するという機能が提供されていることに気が付きました。

ただ、AWS の What's new を確認してもこのアップデートについては見当たりませんでした。
しかし QuickSight のドキュメント変更履歴には 2022 年 11 月 18 日の更新として「Set a reserved value in QuickSight datasets」が追加されていました。

私は最初これを見たときにうまい活用方法が思い浮かばなかったのですが、この新機能の登場で QuickSight Community のある課題が解決されている様子を観測し、なるほどーと思いました。
そこで本日はその課題と同じ状況を作り、実際にこの機能を使って問題を解決してみます。

実現したかったがこれまで出来なかったシナリオ

ユーザーごとの値をもつテーブル形式のビジュアルを配置し、そのデータセットからユーザー一覧の動的パラメータを作成します。

そしてビジュアル2はパラメータで選択されたユーザーの値を表示するビジュアルになるようにパラメータを参照するカスタムフィルターを構成します。

そして、ダッシュボードをフリーフォームレイアウトにした場合はビジュアルを重ねて配置することが出来、さらにビジュアルごとに条件式を使ってビジュアル自体の表示・非表示を切り替えることが出来ます。

これを使うと、ある条件のときはビジュアル1を表示し、ある条件のときはビジュアル2を表示するという形で、ビジュアル自体を切り替えるようなビューを作成することが出来ます。

ここではビジュアル2をデフォルト非表示にし、「すべて選択」以外が選択されたときにビジュアルを表示するような条件を設定しようとしていました。

しかし、これまでは「すべて選択」には値という概念がなかったので、条件付きルールの条件式で「すべて選択」以外を表現することが出来ませんでした。(すべて選択メニューを非表示にした上でカスタム選択肢を追加して頑張るような方向性だった)

予約値を使うことが出来るようになった

今回のアップデートでパラメータの高度な設定の予約値を使えるようになりました。
デフォルトは「推奨値」で、他に Null と任意のカスタム値が設定出来ます。
推奨値はデータ型によって変わりますが、文字列であればALL_VALUESで、整数であれば -2147483648など決まっています。

カスタム値を使うことで任意の値を設定することが出来ます。
カスタム値を使うタイミングとして後述のデータセットに含まれる値を使った場合の挙動を踏まえて決める必要があります。
ここではユーザー一覧に含まれていないhogeという文字列を設定してみました。

これで、先程の条件付きルールで予約値を使うことで「すべて選択」を対象にすることが出来ます。
予約値はあくまでも内部値なので、コントロールの表示上は「すべて選択」のままです。
また、フィルターにパラメータを使った場合に「すべて選択」を選択してもhogeでフィルタリングされる動きになるわけではなく全てを表示するという既存の動作のままです。

予約値を使うことで次の表現が出来るようになりました。
「すべて選択」を選択したときはビジュアル1を表示します。

「すべて選択」以外を選択した場合はビジュアル2を表示し、選択したユーザーの値を表示しています。

データセット内に存在する値を予約値に使うと...

ドキュメントには以下のように記述されていますが、データセット内に存在する値を予約値として重複する形で設定するとパラメータコントールの一覧に表示されなくなります。

When you set up a specific reserved value for your parameter, that value is no longer considered a valid parameter value in your dataset.

Amazon QuickSight でパラメータを設定する - Amazon QuickSight より

先程の例の場合にカスタム値に、データセット内に既に存在するuser3という値を設定してみましょう。

そうすると次のようにコントロールに表示されなくなりました。
この状態で「すべて選択」を選択した場合はuser3のデータが表示されるわけではなく、全ユーザーの情報が表示されます。挙動としては「すべて選択」のままということです。

そして各ビジュアルの表示データ上はuser3のデータは表示されてままとなっています。

カスタム値についてはコントロールから消し込むために使うという使い方ではなく、推奨値(文字列であればALL_VALUES)がたまたまデータセットの有効な値として存在していた場合に予約値と重複して表示されなくなってしまうのでその場合はカスタム値を使うことで回避するという使い方になるのかなと思います。

さいごに

本日は QuickSight のパラメータ「すべて選択」に対して予約値を設定する機能が追加されていたので、実際の問題解決シナリオを探しながら使ってみました。

最初用途はわかりませんでしたが、コミュニティのおかげで理解出来ました。
「すべて選択」を条件などに何か制御したくて出来なかった方はこの機能で解決するかもしれないです。