はじめに
データはそのままでビジュアルだけをフィルターをする方法について、なぜこのような動きになるのか?について詳しくご紹介したいと思います。
QuickSight 計算の評価順序
QuickSightには計算を行う上で明確に評価順序を設けています。
つまりフィルターや、レベルアウェア計算を利用した際に、計算される順序が決まっているため、それを理解することで、より複雑な計算も対応することが可能になっています。
フィルター機能・レベルアウェア計算について
計算順序のを理解する上で「フィルター」と「レベルアウェア計算」について動きをおさらいしましょう。
以下のように日付、グループ名、アイテム、金額を保持したデータセットがあった時に、それぞれの動きを確認してみます。
<フィルター>
特定のデータのみを参照して分析したい時に利用
データの中から条件に合うデータのみを絞り込む
(左)項目(文字列・日付)のフィルターでは「計算前に特定のデータを絞り計算する」
(右)値(数値・計算)のフィルターでは「出力した計算結果から情報を絞る」
ということができます。
フィルターの機能では、計算前(最初)に項目を絞ることと、計算出力後(最後)に項目を絞るという2つのことができます。
<レベルアウエア計算>(参考:Amazonでのレベル対応計算の私用QuickSight)
LAC-A
指定した単位で集計する
以下のように通常の集計ではグループ化の条件に追加した項目(今回はitem単位)で集計されますが、LAC-Aを利用して集計単位を指定することで、指定した項目の粒度で集計をすることができます。
指定する方法は集計関数の中に[ ]で項目を指定します。
LAC-W
QuickSightが計算してビジュアル化する前に事前に計算やフィルターを適用することができる
以下のようにitemでフィルターをすると、計算前に情報が絞られてしまうため、計算結果の結果が変わってしまいます。
そこでLAC-Wを利用することで、フィルター前に計算を行うことができます。
LAC-Wを利用するにはsumOver、countOver、maxOverなど専用の関数を利用する必要があります。
計算の順序
上記のことからQuickSightでは以下のような順番で計算がされます。
フィルター機能①より左側にある計算(LAC-W)は、フィルターに影響されることなく計算を行うことができます。
フィルター機能①では文字列や日付などの項目を事前に絞り込むため、計算を行う前にデータを絞り込みます。
フィルター機能①より右側の計算は、データをフィルターされた状態での計算を行います。
フィルター機能②では各種計算がなされた後にビジュアルレベルでフィルターを行います。
フィルター機能②を利用するためには集計関数を利用することが必要です。
前回の計算フィールドのおさらい
前回紹介した計算フィールドの計算をおさらいしてみましょう。
minOver(min({month}), [{month}])
minOverを利用しているので、LAC-Wなのでフィルターに影響されずに計算します。
minの中に[]があるので、 LAC-Aで集計の粒度を指定しており、month別に一番小さなmonthを求めている計算になります。
結果はmonthと同じ値が取得されています。
minを利用することで集計算数のため、フィルター機能②のビジュアルレベルでのフィルターになります。
それにより、データに影響することなく、日付のフィルターを行うことができます。
最後に
色々な記事で紹介されている、レベルアウェア計算ですが、改めて自分で記事を書くことでより理解が深まったと実感しています。
フィルターも深く考えずに項目を絞ると思っていましたが、動きについて考えてみるととても深いと感じています。
Quicksightでやりたいことを実現するには計算フィールドは避けて通れないので、一緒に理解を深めていきましょう!
Comentários