はじめに
はじめまして!開発本部のデータ&AIチームに4月に新卒入社した蜜澤です。
最近Amazon QuickSightを使用してダッシュボード作成に励んでいるので、QuickSightにおけるインタラクティブなグラフの作り方を紹介しようと思います!中でも、割合系の指標に対してフィルターを適応するのに苦戦したので、そのあたりの作り方を説明します。
この記事はevery Tech Blog Advent Calendar 2024(夏) 26日目の記事になります。
作成するグラフのイメージ
性別、年代、レシピ名を指定すると、CTRの折れ線グラフが表示される。
使用する模擬データ
実際のデータを使用してしまうとアレなので、今回は以下の模擬データを使用します。
それぞれのカラムの定義は以下の通りです。
- date:日付(2024-04-01~2024-04-07)
- recipe:レシピ名(ハンバーグ、からあげ、生姜焼き)
- gender:性別(男性、女性)
- age:年代(10代、20代、30代、40代、50代、60代以上)
- click:レシピをクリックした回数(1~10の整数の乱数)
- impression:レシピが表示された回数(500~1000の整数の乱数)
また、今回は「CTR=click / impression * 100」と定義します。
CTRカラムを作ることは可能ですが、フィルターをかける都合上、CTRはquicksight上で定義します。
使用するデータの注意点として、date 、gender、age、recipe全ての組み合わせごとにclick、impressionを集計したデータである必要があります。
このようなデータを使用することで「10代と20代の男性にハンバーグが表示された場合のCTR」としてフィルターをかけることができるようになります。
データセットを作成する
今回使用する模擬データをQuickSight上にアップロードします。
今回使用するデータはCSVファイルなのでファイルのアップロードを選択します。
ファイルをアップロードすると確認画面が出てくるので、想定通りのデータなら「次へ」を押します。
データの編集/プレビューを押して、データの型などを確認します。
問題がなければ、「保存して視覚化」を押します。
「保存して視覚化」を押すと、分析ページに飛びます。
グラフ作成
左上の「視覚化」を押すと、作成可能なビジュアルのアイコンが表示されるので、作成したいものを選択します。今回は「折れ線グラフ」を選択します
X軸とY軸をどのカラムにするかを選択します。
使用しているデータセットに含まれるカラムが表示されているので、その中から必要なものを選んで、「X軸」と「値」にドラッグ&ドロップします。
X軸に「date」、値に「impression」をドラッグ&ドロップしてみると、、
日付ごとのimpressionの折れ線グラフが表示されます。
今回作りたいグラフはCTRのグラフなので、これからCTRを定義します。
カラム名の上にある「計算フィールド」を押します。
このような画面が表示されるので、「名前」と「定義」を入力します。
名前が「CTR」、定義は「sum({click}) / sum({impression}) * 100」としました。{カラム名}でカラムを計算フィールド内で指定できます。
ここで、「{click} / {impression} * 100」と記入すると、性別や年代を複数フィルターするときに正しく計算できなくなってしますので注意が必要です!
入力したら、「保存」を押します。
CTRが追加されたので、値に「CTR」をドラッグ&ドロップすると、日付ごとのCTRのグラフになりました!
しかし、このままでは性別、年代、レシピ名を指定できないので、指定するために「パラメータ」と「フィルター」を作成します。
パラメータの作成
この後作成するフィルターで使用する値を転送できる名前付きの変数の役割を果たす「パラメータ」を作成します。
左上の「パラメータ」を押して、「追加」を押します。
このような画面が出てくるので、それぞれの項目を入力していきます。
まずは、性別のパラメータを作ります。名前は「gender」、データ型は「文字列」、値は「複数の値」、デフォルト値は「男性、女性」にします。名前とデフォルト値はお好みで変更していただいてOKです!
入力が終わったら「保存」を押します。
作成したパラメータが表示されます。
同じように年代とレシピ名のパラメータも作成します。
今回作成するダッシュボードは「各レシピ別の傾向を分析する」ユースケースを想定しています。
そのため、レシピ名は「複数の値」ではなく、「単一の値」を選択します。
フィルター作成
次に、作成したグラフに表示するデータを選別する役割を果たす「フィルター」を作成します。
先ほど作成したパラメータを使います。
左上の「フィルター」を押し、「追加」を押します。
まずは「gender」のフィルターを追加してみます。
「gender」を押すとフィルターが作成されます。
作成されたgenderフィルターの3点部分を押して、「編集」を押します。
編集画面が出てくるので、各項目設定します。
「フィルタータイプ」は「カスタムフィルター」を選択します。
「フィルター条件」は「次と等しい」を選択して、「パラメータを使用」のチェックボックスにチェックを入れます。
チェックを入れると、すべてのビジュアルとシートにフィルターを適用するか聞かれるので、用途に合わせて選択します。
今回はビジュアルを1つしか作らないので「いいえ」を選択します。
パラメータが選択できるようになりました。
性別のフィルターなので、先ほど作成した「genderパラメータ」を選択します。
最後に「適用」を押します。
同様のやり方で年代のフィルターである「age」とレシピ名のフィルターである「recipe」も作成します。
これでフィルターの編集は終了です。
コントロールの追加
次に、「コントロール」を作成します。 フィルターに使用しているパラメータの値はダッシュボードの編集者しか変更ができませんが、コントロールを追加することで閲覧者がパラメータを変更できるようになります。 左上の「パラメータ」を押して、コントロールを追加したいパラメータの3点部分を押します。
「コントロールを追加」を押します。
このような画面が表示されるので、各項目を入力します。
genderのコントロールなので名前は「性別」、スタイルは「ドロップダウン - 複数選択」、値は「特定の値」、特定の値を定義は「男性」「女性」とします。
入力したら「保存」を押します。
グラフの上部にコントロールが表示されるようになりました。
ドロップダウン形式で「男性」、「女性」、「すべて選択」を選べるようになりました。
試しに、「男性」以外のチェックボックを外してみると、、
グラフの形が変わりました。
男性と女性を集計対象としたCTRのグラフから男性のみを対象としたCTRのグラフに変わリました。
同様にageのコントロールも作ります
「gender」と「age」とは少し違う作り方で「recipe」のコントロールも作ります。
「recipe」のコントロールは「レシピ名をテキストとして指定できるようにする」ことを目指します。
そのため、「テキストフィールド」のスタイルを選択します。
今回の例ではレシピ名が3種類しかないのでドロップダウン形式でも良いのですが、実際の運用を見越すとなると、多くの種類のレシピが対象になります。
そうなると、ドロップダウン形式では見通しが悪くなるため、直接レシピ名を指定する手段を採用しました。
「性別」と「年代」はドロップダウン形式、「レシピ名」のみテキストフィールド形式になっていることがわかります。
レシピ名に「ハンバーグ」と入力してみます。
グラフの形が変わりました。先ほどまでは全てのレシピ(ハンバーグ・からあげ・生姜焼き)を集計対象としたCTRのグラフでしたが、ハンバーグのみを対象としたグラフとして絞り込むことができました。
細かい調整
ここまでできたらほぼ完成です!
最後に細かいところをいじります。
デフォルトだと日付が見にくいので、表示形式を変更します。
「date」を押します。
このような画面が表示されるので、「形式」を押して、好きな表示形式を選択します。今回は「YYYY/MM/DD」にします。
dateの表示形式が変更されてスッキリしました!
グラフのタイトルも変更します。
左上の「プロパティ」を押します。
画面右側にプロパティの編集画面が表示されます。
「ディスプレイ編集」内の「タイトル編集」の筆のようなアイコンを押します。
このような画面が表示されるので、好きなタイトルを入力します。
ここで、パラメータを押すとタイトルがパラメータの内容で動的に変更できるようになるので、「recipe」を押してみます。
パラメータが入力されました!
パラメータの後ろに「のCTR」と入力し、「{入力したレシピ名}のCTR」というタイトルが表示されるようにしました。
レシピ名が「ハンバーグ」の時に、グラフのタイトルが「ハンバーグのCTR」になっています。
説明は省略しますが、X軸やY軸の名前も変更できます。
軸の名前をよしなに変更して、完成です!!!
使ってみる
男性20代と女性20代の生姜焼きのCTRを比較して、日付によって男性女性どちらのCTRが高くなるのかなどを見ることができます。
(今回は乱数を使ったデータなので示唆は得られませんが、、、)
この使い方はあくまでも一例であり、色々な使い方ができると思います。
最後に
今回はAmazon QuickSightを使用して、インタラクティブな可視化を行いました。
今回紹介したビジュアル以外にも多くのビジュアルがあり、様々な可視化ができるので、これからも色々な可視化に挑戦していきたいと思います。
また、今回はデータの整形に関しては触れませんでしたが、QuickSightを使用する際にデータの形式はかなり悩むところなので、今後はデータ整形に関することも紹介できたらなと思います!
この記事が何かの参考になれば幸いです。
最後まで読んでいただきありがとうござました!