Amazon QuickSight テーブルビジュアルでオフビジュアルフィールドと複数カラムを使って並び替えしてみた

2024.05.28

いわさです。

Amazon QuickSight のテーブルビジュアルでは分析およびダッシュボードで列の値による並び替えが可能です。
現状は単列での並び替えが可能で、少し複雑なルールで並び替えしようとすると工夫が必要です。

テーブルビジュアルでの並び替え時に「オフビジュアルフィールド」を指定出来ることに気がついたので複数カラムを組み合わせたソートカラムを作成しつつ、ビジュアルへ表示せずに並び替え用途で使ってみました。

シンプルな並び替え

次のような CSV ファイルをアップロードしてテーブルビジュアルで表示してみます。
各フィールドの並び順がバラバラになるように適当な値を設定しています。

name,val1,val2
elephant,1,1
fish,1,2
apple,1,3
cat,2,1
banana,2,2
dog,2,3

デフォルトだと次のように name 列でソートされました。

並び替え機能を使ってソート列を指定してみましょう。
次のように val1 フィールドの昇順で指定しました。

本日時点ではひとつのソート列のみが指定可能です。
ここで val2 をソート列に指定(降順)した場合は、val1 が無視されています。

複数列で並び替えする

複数列で並び替えを行うユースケースを考えてみます。
まず val1 列の昇順で並び替えし、その中でさらに val2 列の降順で並び替えるように組み合わせた場合です。

本日時点では QuickSight でそれを直接実現する機能はありません。(おそらく近日中に出ます...!)
そのため、上記複数列を考慮したソート目的の列を計算フィールドで作成します。

色々やり方はあると思いますが、ここでは Rank 関数を使って、数値フィールドの昇順・降順に応じた数値を計算することでソート列として使ってみたいと思います。

この Rank 関数ですが、複数フィールドを別々の集計関数で指定しつつ、それぞれに昇順・降順を指定出来るので、地味に汎用性が高いです。
次のように val1 昇順、val2 降順で指定しました。

分析ビジュアル上でソートフィールドに指定してみると、次のような感じに。

良いですね。とても良いのでは。
ソート列を用意して計算フィールドでいくらでも動的に出来るので、コントロール&パラメータにあわせたソート用コントロール作ることも出来そうですね。パフォーマンス上問題なければこれはなかなか良いかも。

オフビジュアルフィールドを追加

で、今回気がついたのは次の項目「オフビジュアルフィールド」です。
そのままなのですが、ビジュアルに表示していないフィールドを並び替え用のフィールドに指定出来るようです。ほう。
先ほど作成した Rank 関数のフィールドをビジュアルから非表示にしました。

その上でオフビジュアルフィールド上で次のように指定してみます。
さらに、この中で集計・並び替えも指定出来ますね。

あー、良いですね、良いですよ!
val1 の昇順の中で val2 の降順で並び替えられています。

オフビジュアルフィールドを指定した場合は標準の並び替えコントロール上ではそのフィールドが表示されます。

並び替えオプション無効時にオフビジュアルフィールド指定しても問題なし

今回のようにオフビジュアルフィールドを指定する場合はリーダーに並び替え操作をさせたくないと思います。
リーダーにダッシュボード上で並び替え変更を許可したくない時は、ダッシュボード公開時の高度な公開オプションで並び替えオプションを無効化出来ます。

問題ないだろうと思いつつ試してみました。
結果としては並び替えオプションを無効化しても分析上で指定したオフビジュアルフィールドでの並び替えは有効でした。良かった。

さいごに

本日は Amazon QuickSight テーブルビジュアルでオフビジュアルフィールドと複数カラムを使って並び替えしてみました。

複数カラムでの並び替えをしたいシーンにソート列を作成した場合でも、ビジュアル上へ表示させないことが出来ました。
これは、たまに使いたい時があるかもしれない。