QuickSightにてシート切り替え時のビジュアルロードが最小限になりました

2021.11.13

いわさです。

QuickSightのダッシュボードで「シート」という機能があります。
シートを使うと分析やダッシュボードで複数のページに分割することが可能です。

ダッシュボードの表示サイズや共有設定の単位を考えるとシート機能は便利ですよね。
Microsoft Excelのシートに似た使い方が可能です。

このシート切り替えたですが、切り替えの際にシートの全ビジュアルがデータロードされていました。
本日のアップデートにて、再ロードが必要なビジュアルのみがロードされる動きに変更されました。

これまで

こういったシートを跨ってコンテンツ表示内容が変わる場合があったので従来まではシートを切り替え時には無条件で各ビジュアルのロードがされていました。

これから

シートを2つ用意し、シートAでパラメータコントロールを配置し、そのパラメータに応じてシートAのテーブルpiyo1と、シートBのテーブルpiyo3の内容をフィルタリングするような作りの場合を想定してみます。
piyo2とpiyo4はフィルタリングの対象外です。

上記ケースだと、piyo3のみが再ロードされ、piyo4は再ロードされません。
影響を受けないpiyo4については30分間隔で更新されます。

機能のON/OFF

この機能は既存の分析で既にデフォルトで有効化されています。
もし、これまでシート切り替えを使って画面のデータリフレッシュを兼ねているような使い方をされている方は今回の機能変更は都合が悪いかもしれません。

そういった場合、分析の設定画面の以下設定値をONにすることで従来どおりシート切り替え時の全ビジュアル再読み込みをさせることが可能です。

この設定は分析ごとに設定可能です。
上記のような使い方をしていない限りは基本は最小限のロード設定にしておいて良いんじゃないかと思いますが、従来の挙動と知らないうちに変わっている可能性があるためご注意ください。

クエリログで確認してみる

最後に全ビジュアルがロードされていないことを確認してみたいと思います。
データセットをダイレクトクエリで作成し、シート切り替え後 RDS for MySQLにてクエリログを確認してみます。

各シート左側のテーブルのみを共通のパラメータでフィルタリングするように設定し、各シートへパラメータ変更用のコントロールを配置します。 シートを切り替えるごとに対象レコードを4件、3件...0件と減らしていってみます。

以下クエリログを見やすいように編集したものです。
どのテーブルにクエリが発行されているか順序を見てみるとわかると思います。

影響を受けるビジュアルのみ再ロードする設定のとき

piyo2とpiyo4は初回のロード以外、一切クエリ発行されていないですね。
期待どおりの動きです。

SELECT * FROM `piyo1` WHERE `id` IN (2, 3, 4)
SELECT * FROM `piyo3` WHERE `id` IN (2, 3, 4)
SELECT * FROM `piyo3` WHERE `id` IN (3, 4)
SELECT * FROM `piyo1` WHERE `id` IN (3, 4)
SELECT * FROM `piyo1` WHERE `id` IN (4)
SELECT * FROM `piyo3` WHERE `id` IN (4)
SELECT * FROM `piyo3` WHERE FALSE
SELECT * FROM `piyo1` WHERE FALSE

シートを切り替える度にビジュアルを再ロードする設定のとき

コントロールを操作した時はシート内の影響のあるビジュアルのみクエリ発行していますが、シート切替時には対象シートの全ビジュアルを対象にクエリ発行されていますね。
こちらも期待どおりの動きですね。

SELECT * FROM `piyo1` WHERE `id` IN (2, 3, 4)
SELECT * FROM `piyo3` WHERE `id` IN (2, 3, 4)
SELECT * FROM `piyo4`
SELECT * FROM `piyo3` WHERE `id` IN (3, 4)
SELECT * FROM `piyo1` WHERE `id` IN (3, 4)
SELECT * FROM `piyo2`
SELECT * FROM `piyo1` WHERE `id` IN (4)
SELECT * FROM `piyo3` WHERE `id` IN (4)
SELECT * FROM `piyo4`
SELECT * FROM `piyo3` WHERE FALSE
SELECT * FROM `piyo1` WHERE FALSE
SELECT * FROM `piyo2`

まとめ

本日はシート切替時のビジュアルロードの仕様変更について紹介させて頂きました。

従来はSPICEでもダイレクトクエリでもデータサイズが大きい場合はシート切り替えの度に長時間のローディングが発生し、ストレスを感じていた部分だったかもしれません。
本機能によって、シートを活用されていた方は操作性が改善されそうです。

操作の影響を受けないビジュアルは30分間隔で更新とのことなので、現在SPICEフルロードのスケジュールが最短1時間、増分更新が最短15分と増分更新については30分以下なので、そこだけ少し意識したほうが良いかもしれませんが、後はダイレクトクエリの時にシート切り替えでリアルタイム性を必要とするかですね。