
はじめに
こんにちは、開発部でデータサイエンティストをしている蜜澤です。
ついに東京リージョンでAmazon Q in QuickSightがGAしました!
データストーリー、シナリオ、トピックなど自然言語でデータ分析を行う機能が追加されましたが、このあたりの機能の解説は以前の弊社のブログや、他の方が記事にされているので、そちらをご覧いただければと思います。
今回はAmazon Q in QuickSightを計算フィールドを作成する際に使用することで、ビジュアル作成をより効率化させられないかの検証をしたいと思います。
使用する模擬データ
検証には以下のような、レシピ動画サイトの特定のレシピの日毎のインプレッション数とクリック数を集計したという想定の模擬データを使用します。

それぞれのカラムの定義は以下の通りです。
- date:日付(2025-01-01~2024-04-30)
- recipe:レシピ名(ハンバーグ)
- click:レシピをクリックした回数(1~10の整数の乱数)
- impression:レシピが表示された回数(100~200の整数の乱数)
やってみる
まずは、CTRを作成できるか試してみます。
CTR = click / impresseion
を期待しています。
計算フィールド追加を選択し、「計算を作成」をクリックします。

テキストフォールドが出てくるので、そこに作成したい計算式を入力します。
今回は「CTR」と入力。
計算式を書いたら、「作成」をクリックします。

2〜3秒ほどで計算式が作成されました。
期待している通りの計算式ができたので、「挿入」をクリックします。

計算式が挿入されたので、最後に「保存」をクリックして、計算フィールドの作成完了です。

自然言語で、計算フィールの計算式を作成することができました。
CTRの定義を与えなくても作成できるのは良いなと思いました!
しかし、これくらい簡単な式ならQを使わずに、自分で作った方が早いと思うので、もう少し複雑な計算式を作成してみます。
日、週、月といった日付の粒度をパラメータで指定することで、日付の集計単位が変わるような計算フィールドを作成します。
下準備として、DateGranularityという文字列のパラメータを作成します。
このパラメータで日、週、月を指定します。
先ほど作成したCTR計算を、分子と分母が粒度の変更に伴って合計されるように変更します。

日本語でプロンプトを書いたらあまり良い出力を得られなかったので、英語でプロンプトを書きました。
うまくいかなかったプロンプトは記事の最後の方で紹介します。
何パターンか試しましたが、weekの時にWKにならずDDになってしまうのは、改善しなかったので、今回は諦めて手動で直します。

得られた結果を挿入して、day、week、monthを日、週、月に、粒度が週の時のDDをWKに置き換えて、保存します。

粒度を週にするとevent_dateが週の始め(日曜日)になり、月にするとyyyy-mmで月の形式になる日付計算フィールドが完成しました。

最後にもう少し複雑な計算フィールドに挑戦します。
StartDateとEndDateというパラメータを作成し、粒度に合わせて開始日と終了日を調整してくれる日付のフィルターを計算フィールドで作成します。
粒度で月を選択している状態で、StartDaeが2025-01-15、EndDateが2025-02-07と入力された場合に、2025-01-01~2025-02-28のデータが表示されるといった想定になります。
以下のようにプロンプトを入力しました。

DAY、WEEK、MONTHを日、週、月に置き換えて保存します。

粒度を日にすると開始日と終了日の間の日付フィルターが1になり、週にすると開始日と終了日を含む日の週始めから週終わりまでの日付フィルターが1になっているので、期待通りのものができていそうです。
最後にフィルターで、日付フィルターが1の場合のみ表示するようにすれば、粒度に合わせて開始日と終了日を調整してくれる日付のフィルターの完成です!

このフィルターを自作した時はかなりの時間がかかったので、一瞬でできて感動しました!
うまくいかなった例
うまく計算フィールドが作成できなかったプロンプトも紹介します。
簡潔に日本語でプロンプトを入力したら、エラーが出ました。

日本語でももう少し詳しくプロンプトを書いたら、出力を得ることはできました。
しかし、週がではなく、年が設定されました。

日本語のプロンプトに対する出力の精度の向上は今後に期待です!
さいごに
今回はAmazon Q in QuickSightを使用して計算フィールドを作成する検証を行いました。
簡単な計算フィールドの作成はQを使用しない方が早いと思いますが、少し複雑な計算フィールドを作成する時や、やりたいことは決まっているが式がパッとは思いつかない時には、開発を効率化できる機能だと感じました。
最後まで読んでいただきありがとうございました!