Amazon Q in QuickSight トピックインデックスの更新仕様を検証してみた
いわさです。
Amazon Q in QuickSight ではトピックをよく使うのですが、実はトピックは作って終わりではなくインデックスの更新が必要になります。
トピックインデックスはデータセットのコピーではないのですが、最新の定義と値が記録されるように定期的に更新することが推奨されています。
今回ですが、トピックを更新しない場合の挙動を確認したり、自動更新設定について確認してみましたので紹介します。
トピックを更新しない場合の挙動
まず、トピックインデックスを更新しない場合は最新データにアクセスできないのでしょうか?
それが一番気になるところですが、データ自体はデータセットの最新状態に対して問い合わせがされます。それ以外でインデックスされたデータが使われることがあるのですが、そのあたりが機能しなくなる感じです。
試してみるのがわかりやすいので試してみましょう。
まず、S3 バケットに次の CSV ファイルをアップロードしました。
team,location,num
チームA,東京,1
チームA,大阪,2
チームB,大阪,1
チームC,名古屋,1
で、ここから Athena 経由で QuickSight のデータセットを作成し、そこからトピックも作成します。
この時点でデータQ&Aのテキストボックスに「チーム」と入力すると、次のようにインデックス化されたチーム名がオートコンプリートで表示されます。
データ更新後にトピックを更新しない場合
続いて、データセットのデータを更新してみましょう。
チームDを追加してCSVファイルを再びアップロードします。
team,location,num
チームA,東京,1
チームA,大阪,2
チームB,大阪,1
チームC,名古屋,1
チームD,札幌,3
QuickSight データセットを更新します。トピックインデックスは更新しません。
なお、この時データセットがダイレクトクエリ/SPICE に関わらず、自動でトピックインデックスは更新されませんでした。
ここで先程と同じようにデータQ&Aのテキストに「チーム」と入力しても先程と同じようにチームCまでしか表示されません。
また、チームDに関して絞り込むような指定をすると次のように関係のないチームのデータを表示しはじめました。
ただし、チームを絞らずに全体のデータを取得しようとするとチームDのデータも取得出来ています。
データソースとして最新のデータが含まれてはいるのですが、インデックスを使ったアクセスをしようとするとうまく機能していないことがわかります。
データ更新後にトピックを更新した場合
では、上記の状態からトピックを更新してみます。
データタブにデータセットごとのトピック更新ボタンが用意されているのでそちらから更新を実行しました。
なお、更新中のバナーに記載されていますが、インデックス作成が完了するまで質問には使用できないと記載されています。
ただ、私が試した際にはトピックインデックス更新中もデータQ&Aは使えました。おそらく完了するまでは最新のインデックスデータは使えないよ。という意味なのかなと思いました。(ちょっと自信ない)
トピック更新後にオートコンプリートを確認してみると、今度は「チームD」が表示されています。
そしてチームDに関して問い合わせをしてみると、適切に絞り込んでくれています。
公式ドキュメントの以下の意味が最初よくわからなかったのですが、今回の挙動からなんとなく理解出来た気がします。
問い合わせ時にはインデックスを使っていて、それを利用してデータにアクセスしているので、データは更新してトピックインデックスが更新できていないと、最新データにはアクセスできるけど、オートコンプリートや回答を生成する際にインデックスを使う部分でうまく機能しないという感じですね。
Q doesn't index metrics. For example, measures stored as integers are not indexed by Q.
The topic index is an index of unique string values for fields included in a topic. Q uses this index to generate correct answers, provide autocomplete suggestions when someone asks a question, and suggest mappings of terms to columns or data values.
自動更新を設定する
で、このトピックインデックスですが、デフォルトは未設定なのですけどもトピックインデックスの更新をスケジュール設定することが出来ます。
設定してみましょう。
トピックと紐づいているデータセットのモードがダイレクトクエリか SPICE かで設定できる内容が変わります。
こちらですね。デフォルトでは Topic refresh Schedule に None が設定されています。
ダイレクトクエリの場合
「ADD SCHEDULE」ボタンからスケジュールの設定が可能です。
ダイレクトクエリの場合は次のようにどういった周期で何時ごろに更新を行うのかを指定することが出来ます。
こちら次のように最短が Daily となってまして、自動更新の場合は 1 日 1 回が最短頻度になります。データセットだと 1 時間に 1 回とか出来たりするので、ギャップに注意しましょう。
ダイアログで「SAVE」ボタンを押すと次のようにスケジュールが設定されました。
「VIEW HISTORY」ボタンからトピックインデックス更新履歴を確認することが出来ます。
上記設定したスケジュールの後に確認してみると、Type が Scheduled の更新処理が実行されていることを確認出来ました。
SPICE の場合
データセットのモードが SPICE の場合は任意の時間の設定が出来ません。
「ADD SCHEDULE」ボタンを押すと次のように SPICE データセットのスケジュールに合わせるか?と聞かれます。なるほど...
「Set topic refresh schedule to match dataset refresh schedule」にチェックを入れて「SAVE」ボタンを押すと次のようにスケジュールっぽいものが設定されていることがわかります。
公式ドキュメントに記載されているのですが、データセットの更新頻度が 1 日以下の場合でも、トピックインデックスは最短の 1 日 1 回になるとのことです。
実行時間についてはドキュメント上明記されておらず、マネジメントコンソール上も確認が出来ませんでした。
私が試した際にはデータセットが自動更新されたあとも数時間トピックが更新されていなかったです。明日また確認してみます。
さいごに
本日は Amazon Q in QuickSight トピックインデックスの更新仕様を検証してみました。
挙動からすると、回答精度や品質に影響するのでトピックインデックスの更新重要ですね。忘れずに設定したいです。