💽

QuickSightは良いぞ

2024/04/22に公開

我々のチームでは、BIツールにAWSのQuickSightを使っています。
売上などのデータを可視化して分析したいというニーズがビジネスサイド[1]にあり、かつ弊社ではほとんどのサービスをAWSで運用しているため、QuickSightを選択しました。
しばらく運用してきて「QuickSightイイね〜」な気持ちになったため、どんな使い方ができるのか、どんなところが良いと感じるポイントなのかを紹介しようと思います。

細かい設定の話についてはたくさん記事があるので割愛します。また、QuickSight以外のBIツールを触ったことが無いため、他のツールとの比較ではないこともご了承ください。

QuickSightって何?

Amazon QuickSight は、クラウド規模のビジネスインテリジェンス (BI) サービスで、どこにいても、作業する人に easy-to-understand インサイトを提供できます。Amazon QuickSight はクラウド内のデータに接続し、さまざまなソースからのデータを組み合わせます。単一のデータダッシュボードで、AWSデータ、サードパーティーデータ、ビッグデータ、スプレッドシートデータ、SaaS データ、B2B データなどを含める QuickSight ことができます。

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/welcome.html

簡単に言うと、DBなどからデータを引っ張ってきて、それを可視化することができるツールです。

↓こんな感じのそれなりにリッチな良い感じのダッシュボードを簡単に構築することができます。(サンプルデータを使って作成)

便利ポイント

QuickSightには、使いこなせないほどに便利な機能がたくさん搭載されているのですが、自分がこれまで使ってきて便利だと感じたポイントについて紹介します。

計算フィールド

データセット内の値を使用して、計算したり型変換した新しいフィールドを追加することができます。
計算フィールドで適用できる関数も結構豊富にそろえてあり、例えばparseJsonを使うと、JSON形式のデータをパースして扱うことができます。他にもifelseという関数もあるので、「〇〇な条件ではhogeを出力し、△△な条件ではhugaを出力」というようなフィールドも簡単に作成することができます。

また、地味ですがすごく便利だなと感じるのが、以下のような元のデータにはないフィールドを追加して表示させたいケースです。
例えば、以下のような構成のusersというテーブルの値をデータソースとしたダッシュボードを作成したいとき、生年月日のカラムはありますが、年齢の情報はDBでは持っておらず、このままでは年齢を表示することができません。

カラム名
id int
name string
birthdate date

ダッシュボード側で「age」というフィールドを作成し、計算フィールドで現在の日付とbirthdateの値の差分を出す式(dateDiff)を設定することで、各レコードに対応する現在の年齢を持った動的なフィールドを追加することができます。

この計算フィールドを使って動的なフィールドを追加できるところが、痒いところに手が届く感じがして個人的にはとても気に入っています。

動的なデフォルト値

ダッシュボードのフィルターに動的なデフォルト値を設定することができます。
閲覧者側で操作できるフィルターを適用することができるのですが、ダッシュボードを開いた段階で特定の値が選択された状態で表示されるので、使いやすさが向上します。
今月のデータを見たい場合、対象のカラムに対して「月初から今日まで」のフィルターを設定しておくことで毎回選択する手間を省くことができます。
詳細はこちらのドキュメントを参照してください。

ダッシュボードの埋め込み

自分たちが作ったアプリケーション内にQuickSightのダッシュボードを埋め込むことができます。
私達の場合は、社内ツールに売上データのダッシュボードを埋め込むことでビジネスサイドが簡単に可視化されたデータにアクセスできるようにしています。(後述)

機械学習による予測機能

QuickSightには機械学習による予測機能があります。
X軸に日付、Y軸になにかの値を持つようなシンプルなグラフに対して、ワンクリックで今後の予測グラフを追加してくれます。(グラフのオレンジ部分)
what-if分析をすることもでき、現在の施策が売上にどう影響を与えるのかの大まかな予想を立てるみたいなこともできそうです。

活用例

社内ツールへのダッシュボードの埋め込み

前述したように、社内ツールにQuickSightで作成した売上や各マスタ情報のダッシュボードを埋め込んで活用しています。
具体的には、私達のチームはふるさと納税支援事業を展開しているため、自治体毎、返礼品事業者毎、返礼品毎の売上データを可視化できるようすることで、どのセグメントの売上を伸ばしていく必要があるかなどの分析に役立てています。このように、一つのデータセットに対してどの項目でグループ化させるかを変えるだけで複数のセグメント別のダッシュボードを構築できるのもQuickSightの便利ポイントの一つです。

社内ツールのようにすごく手の込んだものは求められておらず、必要なデータの閲覧やフィルタリングができれば良いようなパターンではこのQuickSightのダッシュボードの埋め込みは非常に有効なアプローチだと思います。

デプロイ数の可視化

QuickSightはS3もデータソースとして使うことができるため、デイリーでのリポジトリ毎のデプロイ数をカウントしたデータをS3に格納し、それをQuickSightで可視化しています。
私達の開発チームでは開発生産性の指標としてデプロイ数を追っています。指標になっているデータを可視化することで認識がされやすくなり、チームでの意識共有に寄与していると感じています。

まとめ

これまでQuickSightを色々いじってきた所感は以下のような感じです。

  • 簡単にリッチなダッシュボードを作成できる
  • データセットやダッシュボードの作成にはややクセがあるように感じるが、慣れれば問題なし
  • ビジネスサイドの人が構築側に回るのは大変そう
    • DBをデータソースとする場合、それなりにDB構造を理解していないとキツイかも

売上ダッシュボードを作成したことでビジネスサイドで分析がしやすくなり、「これでXX円は売上伸ばせる!」なんてことも言ってもらえました。活用次第では少ない労力で大きなインパクトを与えることができるかもしれませんね。

シンプルにダッシュボードを構築するには、QuickにSightできるすごく良いツールだと感じています。
もっと活用できるシチュエーションはあるはずなのでガンガン使っていきたいと思っています。
誰かの参考になっていれば嬉しいです。

脚注
  1. 開発サイドの対義語として使われるビジネスサイドという言葉はあまり好きでは無いのですが(エンジニアだってビジネスでしょの意)、ここではとりあえず「エンジニア以外の職種」を表す言葉として使用します ↩︎

NE株式会社の開発ブログ

Discussion