こんにちは!Lead Engineerの筒井です!ここのところ業務でQuickSightを触っています。BIツールって一般的にそういうものなのか、結構癖があるものの、慣れてくると色々なことが実現できて面白さを感じています。
QuickSightには非常に良くできた デモサイト(後述)があるのですが、
QuickSightで表現したいことをどうやったら実現できるのかわからない時、ググったりQuickSightのForumを漂ったりした結果、最終的にこのデモサイトの「Tips & Tricks」に行き着くことが多くありました。そこで、どんなテクニックがそこで紹介されているのかを、あらかじめここにまとめておきたいと思います。
目次
デモサイト DemoCentralの紹介
まずはデモサイトについて簡単に紹介します。このサイトの位置付けとしては、AWS社の従業員の方が事例紹介として社内外に共有するためのデモサイトのようです。
DemoCentral - https://democentral.learnquicksight.online/
Why bring content to DemoCentral?
(なぜ DemoCentral にコンテンツを提供するのですか?)
You will be able to easily share your awesome dashboards with wider team and customers alike.
(あなたの素晴らしいダッシュボードを、より多くのチームや顧客と簡単に共有することができます。 )
デモサイトには「Tips & Tricks」以外にも、QuickSightのさまざまな機能を活用したダッシュボードやビジュアルが掲載されています。単なる機能の説明ではなく、実際にどう活用できるのかの例を見ることができるため非常に勉強になります。ダッシュボードとして完成された例も多数掲載されており、自分が作ったダサダサなダッシュボードに比べてこんなにイケてるものが作れるのかと驚きました。
以下の画像は掲載されているいくつかのダッシュボードのスクリーンショットです。非常にイケてますね。
さらにこのデモサイトでは、編集モードに入って、実際のデータを見たり、ビジュアルを変更したりすることで理解を深めることができます。この利用者ごとに独立した編集環境は1時間で有効期限が切れるので、その際はブラウザでデモサイトを再読み込みする必要があります。この辺りの使い方は、デモサイトサイドメニューの「Help」から確認することができます。
Tips & Tricks解説
Interactivity - Dynamic Dimensions and Measures
概要
ビジュアル内の集計(分類/項目)や値に利用するフィールドをインタラクティブに切り替える方法です。
例えば積み上げ棒グラフでは、X軸またはY軸による分類、色による分類、データの値それぞれのフィールドを指定してグラフを作ります。ある特定の分類方法で特定の値を見たい場合や、その組み合わせがそれほど多くない場合には、フィールドが固定のビジュアルを作成すれば良いのですが、利用者が多くの項目から切り口を選んで見られるようにしたい場合には、この方法が便利です。
やり方の解説
「指定されたフィールドの値を返す計算フィールド」を追加し、そのフィールドを利用することで目的を達成します。
デモのビジュアルのY軸に指定されたフィールドは、 DynamicDimension1
です。このフィールドはラジオボタンの選択状態によって、下図のような値をとります。
具体的には、「Salesperson」が選択されているときは Salesperson
フィールドの値、「Segment」が選択されているときは Segment
フィールドの値です。
ラジオボタンの選択状態はパラメータの値として取得できるので、計算フィールドの数式上でifelse関数により分岐することで実現できます。
このようにすることで1つのフィールドをY軸に設定したまま、利用者が分類に使う項目を指定することができるようになります。色による分類や、データの値についても同様です。
// DynamicDimension1 ifelse( ${pDimension1}='Segment', Segment, ${pDimension1}='Salesperson', Salesperson, Salesperson )
Calculation - Switch Date Aggregation
概要
日時による集計単位(時間ごとの値のグラフ、日ごとの値のグラフなど)をインタラクティブに切り替える方法です。
集計に使うフィールドが日時データの場合、ドリルアップやドリルダウンを利用することで集計単位を切り替えることも可能ですが、
- 日 ⇔ 週 ⇔ 月のように1段階ずつドリルアップ・ドリルダウンする必要がある
- ドリルダウン時に表示期間が変わってしまう(週を選択してドリルダウンした場合は、その週が表示期間になる)
- 時、日、週など決まった単位でしか集計できない(2時間ごと、半年ごとなどはできない)
- ドリルアップ・ドリルダウンの概念と機能を利用者が理解し、適切なデータポイントを見つけてクリックする必要がある
など、いろいろな理由から不便な場合があります。
そこで、あらかじめ集計単位を選択肢として用意して、その内容に応じて表示を切り替えようというものです。 さらにこの方法を応用すると、例えばチーム番号のような日時とは関係のない項目を集計に使用したり、それらを組み合わせたりすることも可能です(この場合はフィールドの型を日時でなく文字列にする必要があるので注意が必要です)。
やり方の解説
「指定された集計単位に応じて、そのレコードが属する日時を返す計算フィールド」を追加し、そのフィールドで集計することにより目的を達成します。
デモのビジュアルのX軸に指定されたフィールドは、 Datefield
です。このフィールドはラジオボタンで選択された値(Periodstarting
)によって、下図のような値を取ります。
具体的には、「Day」が選択されているときは Admit Date
フィールドそのもの(時刻情報をドロップ)、「Month」が選択されているときは Admit Date
フィールドの月初の日付といった値を取ります。
// Datefield ifelse( ${Periodstarting}='Day', truncDate("DD", {Admit Date}), ${Periodstarting}='Month', truncDate("MM", {Admit Date}), ${Periodstarting}='Quarter', truncDate("Q", {Admit Date}), truncDate("YYYY", {Admit Date}) )
値は集計ごとの合計値が指定されているため、 Datefield
の各日付ごとに集計された合計値がグラフに表示されることになります。
Visual - Bar - Conditional Formatting
概要
棒グラフにおいて、各項目の値によってバーの色を変える方法です。 テーブルやKPIなど一部のビジュアルでは条件付き書式によって色を付けることができますが、棒グラフではそれができないため、このテクニックを利用します。 また、このデモではその閾値を利用者がインタラクティブに変更できるようになっています。
やり方の解説
積み上げ棒グラフにおいて、各項目の値が1色になるように色の分類を設定することにより目的を達成します。
デモのビジュアルではX軸に Salesperson
フィールドを指定し、値として Weighted Revenue
の合計値を利用しているため、「Salesperson
で集計した Weighted Revenue
の合計値が指定された閾値よりも大きいかどうかを表すフィールド」として Bar Color
を追加し、それを色の分類に使用しています。
// Bar Color ifelse( sumOver({Weighted Revenue}, [Salesperson], PRE_AGG) > ThresholdValue, 'Above threshold', 'Below threshold' )
Grouped Table / Pivot Table Headers
概要
テーブルにグループでまとめたヘッダをつける方法です。また、このデモではグループごとにセルに色をつけています。
やり方の解説
これは固有のテクニックではなく、レイアウトをフリーフォームにしてInsightビジュアルを重ねているだけです。また、セルへの色付けは、単に条件付き書式を使用しています。
Insightビジュアルでは、各数値や集計結果を表示することも可能ですが、数値を使わずにただの文章を表現することが可能です。フリーフォームレイアウトを選択できる要件であれば、このテクニックを応用して、さまざまなリッチな表現を実現できます。デモサイトのダッシュボードでもこのテクニックを利用している例があります。
Interactivity - Highlight selection across visuals
概要
ビジュアル上のデータをクリックすることでそのデータを色やサイズでハイライトし、さらにビジュアルをまたいでそのハイライトを連動させる方法です。
やり方の解説
ナビゲーションアクションを使い、ビジュアルのデータクリック時にパラメータを指定(して同じシートに遷移)することにより目的を達成します。
テーブルの色付けには条件付き書式、棒グラフの色付けには Visual - Bar - Conditional Formatting と同じテクニックを使用しています。また、散布図のマーカーのサイズは、「countryフィールドの値がパラメータの値と同じであれば 10
、そうでなければ 0.5
となるフィールド」として SelectedCountrySize
を追加し、その値を使用しています。
// SelectedCountrySize ifelse(${pSelectedCountry}=country, 10, .5)
まとめ
今回はまずPart 1として、QuickSightデモサイトのTips & Tricksの中から実際にプロジェクトで利用したものを中心にいくつか解説しました。またの機会にこの続きとして他のテクニックについてもまとめていきたいと思います。