🌊

【QuickSight】rankの使い方

2023/04/26に公開

QuickSightを使用する上で、細かい取り回しが効くと思っている「rank」の使い方をいくつか書こうかなと思います。今回は4事例ほど…

  1. 順位付け
  2. ソート
  3. 最新情報の表示
  4. 棒グラフなどの表示本数の制御

でお送りいたします。

1.順位付け

例えば、

No kind value
1 a 0.12
2 a 0.13
10 c 0.24

みたいなデータを持っているとして、

#順位付け
rank(
    [avg(value) DESC],
    []
)

とすれば、全体の[value]の値から、降順で順位を振ってくれる。

これを、[No]の横並びで比較したいのであれば、

rank(
    [avg(value) DESC],
    [No]
)

とすれば、

となる。後は、これに対して「条件付き書式設定」で色付けの設定を行うと、

のように見やすくなる。多少複雑にはなるが、[partition_filed]となる、二個目の[]の部分で複数の条件を付けてランク付けも可能になる。

2.ソート(rank使わなくてもよかった。修正)

X軸やY軸の順序を、自分がやりたい順序で表示したいときに使える。例えば先ほどの表の例でいうと、a→b→cの順序で並んでいるのだが、これを、b→a→cの順序に並べたいときに、

#kind-sort
ifelse(
	{kind}="a",2,
        {kind}="b",1,
        {kind}="c",3,
        99
    )

として、それを「並べ替えオプション」で選択すると、

となる。例えば、曜日の並び替えとかで使用したりする。

3.最新情報の表示

例えば、異なる日付のデータを持っている場合、最新の日付のデータのみを表示したい時には、

#最新
rank(
    [date DESC],
    [kind]
)

としたものを、フィルタリングに、

とすれば、最新の情報のみ表示できる。

4.棒グラフなどの表示本数の制御

  1. 表示本数の制御に使用したいフィールドをrankをつける
  2. パラメータに数値の変数を作成し、コントロールに追加する
  3. フィルターに1で作成したrankに2で設定したパラメータを当てはめる

*余談
これはあまりない事例かと思うのですが、lagを使用した計算を行っていて、

lag(sum(value), [No ASC], 4, [kind]) 
+ lag(sum(value), [No ASC], 3, [kind])
+ lag(sum(value), [No ASC], 2, [kind])
+ lag(sum(value), [No ASC], 1, [kind])

といった感じで、Noを基準として見て、4つ分を足し上げたものを表示したいときに、そのまま表示すると、

となるのですが、これを見やすいようにと「フィルター」で「No」の5以上とかしてしまうと、

このようにフィルタリングされた状態から、表示される。
なので、これを先ほど設定したrankでの表示本数を制御すると、

こんな感じで見やすくなる。

さいご

今回はこれにて以上になります。まだ何個か私が使用しているやり方もあるのですが、長くなりすぎてもと思い、いずれ書きたいと思います。

Discussion