はじめに
QuickSight と Athena を連携しているときに、Athena 側のテーブルを再作成したいときがあります。例えば、Athena で CTAS (CREATE TABLE AS SELECT) でデータ加工を行うとき、テーブルを DROP TABLE した後に、再度全体のデータを使って CREATE TABLE したいタイミングがあります。
QuickSight と Athena が連携しているときに、DROP TABLE, CREATE TABLE をしても問題ないのか気になったので検証してみました。QuickSight のデータ定義からやり直しになるのは大変そうなので、設定上にどのような影響があるのか調べてみます。
結論
同じテーブル名で再作成すると、QuickSight 側は何も設定変更せずとも、そのまま利用できる。
データ可視化の観点では、DROP TABLE と CREATE TABLE の間はデータが無いので、エラーになる。
新しいテーブルを作成
Athena で適当に新しいテーブルを作ります。テーブルを再作成したときにわかりやすくするため、WHERE で「東京支店」のみのデータに限定してみます。再作成するときには、この WHERE 句を外します。
CREATE TABLE recreate_table AS
SELECT *
FROM outputs
WHERE name = '東京支店';
QuickSight のデータセット作成
Athena で作成したテーブルを使って、新しいデータセットを作成していきます。
Athena
Create
athena-recreate-test
Edit
Save
こんな感じでデータの可視化ができました
ダッシュボード化
ダッシュボードが作られました
テーブル削除
次に、QuickSight が参照しているテーブルを削除します。
DROP TABLE recreate_table;
すると、QuickSight 上でDashboard が見えなくなりました。エラーメッセージが表示されます。
Analysis も同様のエラーが出ています。
再作成
では、同じ名前でテーブルを再作成してみましょう。今度はWHERE 句を付けていないので、「東京支店」以外のデータも見えるはずです。
CREATE TABLE recreate_table AS
SELECT *
FROM outputs;
Create Table した直後に、Analysis が普通に反映されました。QuickSight 側は何も設定変更していません。
Dashboard ももちろん反映されています。
検証を通じてわかったこと
- QuickSight で Athena を使って Dashboard や Analysis を作ったあとに、Table を同じ名前で再作成したら、QuickSight 側は何も気にせずそのまま利用可能
- Direct Query の場合は何もきにしないでOK
- SPICE の場合は、データのリフレッシュはもちろん必要
- DROP TABLE と CREATE TABLE の間は、ダッシュボードが表示されなくなる。エラーメッセージが表示される。