2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QuickSightのSPICEのフル更新と増分更新の検証

Last updated at Posted at 2025-03-17

概要

AWSのBIツールであるQuickSightでは、データはキャッシュされ、SPICEに保持されます。
SPICEの更新方式にはフル更新と増分更新がありますが、使用が分かりにくいためデータとともに検証し整理したいと思います。

公式ドキュメントはこちらを参照ください。

検証環境

データのフロー

データフローは以下の流れで実施します。

① S3にファイルを格納
② Athena経由でSPICEに取り込み
③ 結果をQuickSightのダッシュボードで確認

image.png

QuickSightのダッシュボードの設定

ダッシュボードの設定内容は以下の通りです。結果の1つとしてダッシュボードの内容を確認していきます。

image.png

SPICE取り込み検証

【フル更新検証】

フル更新①

空のスパイスにフル更新でデータを取り込みます。

  • 取り込み内容
csv
id,name,point,datetime
1,A,100,2025-03-13 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • SPICE更新内容
取り込まれた行 データセットの行 更新の種類
3 3 フル更新
  • ダッシュボードで表示

想定通り3件のデータを登録できました。

id name point
1 A 100
2 B 200
3 C 300

フル更新②(同一データあり)

次に、同じデータがあった場合にどうなるかの検証です。

  • 取り込み内容

idが3のデータが2件になるようにCSVを用意しました。

csv
id,name,point,datetime
1,A,100,2025-03-13 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • SPICE更新内容

しっかりと、4件取り込まれました。

取り込まれた行 データセットの行 更新の種類
4 4 フル更新
  • ダッシュボードで表示

ダッシュボードに表示された結果は3件ですが、同じレコードは加算されるようにグラフを作成したので、Cのpointが600になっています。

id name point
1 A 100
2 B 200
3 C 600

【増分更新検証】

増分更新には、設定オプションがあり、本日日付からの期間の範囲を指定します。
期間の範囲内と範囲外ではそれぞれどのような挙動をするのかを整理していきます。

image.png

増分更新 追加(期間範囲内)

  • SPICE取り込み済みのデータ
id,name,point,datetime
1,A,100,2025-03-13 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • 取り込み内容

取り込みデータには、Dのデータを追加しました。

id,name,point,datetime
1,A,100,2025-03-13 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
4,D,400,2025-03-14 01:00:00.000
  • SPICE更新内容
取り込まれた行 データセットの行 更新の種類
4 4 増分更新
  • ダッシュボードで表示(ビジュアル:テーブル)

Dのデータが追加されました。

id name point
1 A 100
2 B 200
3 C 300
4 D 400

増分更新 更新(期間範囲内)

  • SPICE取り込み済みのデータ
id,name,point,datetime
1,A,100,2025-03-13 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • 取り込み内容

Aのpointを100から500に変更しました。

id,name,point,datetime
1,A,500,2025-03-14 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • SPICE更新内容
取り込まれた行 データセットの行 更新の種類
3 3 増分更新
  • ダッシュボードで表示

Aのデータが更新されました。

id name point
1 A 500
2 B 200
3 C 300

増分更新 削除(期間範囲内)

  • SPICE取り込み済みのデータ
id,name,point,datetime
1,A,100,2025-03-13 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • 取り込み内容

Bのデータを削除しました。

id,name,point,datetime
1,A,100,2025-03-15 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • SPICE更新内容
取り込まれた行 データセットの行 更新の種類
2 2 増分更新
  • ダッシュボードで表示

Bのデータが削除されました。
ということは、取り込むデータだけでなく、元のデータの日付も参照しているようですね。

id name point
1 A 100
3 C 300

増分更新 追加(期間範囲外)

  • SPICE取り込み済みのデータ
id,name,point,datetime
1,A,100,2025-03-13 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • 取り込み内容

Dのデータを追加しました。

id,name,point,datetime
1,A,500,2025-03-13 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
4,D,400,2025-03-14 01:00:00.000
  • SPICE更新内容
取り込まれた行 データセットの行 更新の種類
0 3 増分更新
  • ダッシュボードで表示

ダッシュボードに変化はありませんでした。

id name point
1 A 100
2 B 200
3 C 300

増分更新 更新(期間範囲外)

  • SPICE取り込み済みのデータ
id,name,point,datetime
1,A,100,2025-03-13 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • 取り込み内容

Aのpointを100から500に変更しました。

id,name,point,datetime
1,A,500,2025-03-14 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,250,2025-03-13 01:00:00.000
  • SPICE更新内容
取り込まれた行 データセットの行 更新の種類
0 3 増分更新
  • ダッシュボードで表示

ダッシュボードに変化はありませんでした。

id name point
1 A 100
2 B 200
3 C 300

増分更新 削除(期間範囲外)

  • SPICE取り込み済みのデータ
id,name,point,datetime
1,A,100,2025-03-13 01:00:00.000
2,B,200,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • 取り込み内容

Bのデータを削除しました。

id,name,point,datetime
1,A,100,2025-03-13 01:00:00.000
3,C,300,2025-03-13 01:00:00.000
  • SPICE更新内容

Bのデータを削除しました。

取り込まれた行 データセットの行 更新の種類
0 3 増分更新
  • ダッシュボードで表示

ダッシュボードに変化はありませんでした。

id name point
1 A 100
2 B 200
3 C 300

そのほか

データセットの設定」や「増分更新の設定」を変更した場合に、SPICEの更新設定が実行されてしまいます。その実行内容はフル更新で実行されているようです。

まとめ

  • フル更新: SPICE上のデータを空にして新しくデータを取り込む
  • 増分更新(期間範囲内): 取り込むデータだけでなく、元のデータの日付も参照し取り込む
  • 増分更新(期間範囲外): データの取り込みはされない

図で表すと下記のようなイメージになります。(図は、増分更新になっているが、フル更新は更新期間がすべてになるイメージ)

image.png

日付を指定して増分更新の機能はなさそうなので、更新漏れがないように増分更新のスケジューリングが必要ですね。また、問題があって、増分更新の期間を変えたい場合にフル更新が実行されてしまうのでそちらも注意が必要ですね。

終わりに

今回は、QuickSightのスパイス取り込みの使用についてまとめました。
機会があれば、データ件数が多い場合などの処理時間や、そのコストを削減できる方法を整理する方法を調査できればと思います

以上、ここまで読んで頂きありがとうございました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?