SPICE容量を削減する方法

RedShifts経由でSPICEにデータを入れようとしているのですが

明細データ1年分5億件をSPICEに入れようとすると300G必要となります。

RedShifts側のデータタイプ、QuickSight側のデータセットのデータタイプなど何等か見直したら容量削減に繋がりますでしょうか?項目数は最低限にしております。

RedShifts上は数字のコードはINT4,8などを使用し数量、金額の項目はnumericを使用

データセットは各々INTGER、DECIMALです。

ご質問ありがとうございます。

項目数および Redshift 側の INT4/INT8 使い分けについて承知いたしました。そこからさらに容量を抑制可能な点があるとすれば、データ型の「QuickSight 側での認識」と「行数そのもの」の 2 軸になるかと思います。

■ データ型の認識確認

SPICE のデータ型別容量は以下の通りです。

  • 数値(Numeric): 12 bytes/セル(固定)
  • 日付(Date): 12 bytes/セル(固定)
  • 文字列(String): 24 + UTF-8 文字列長 bytes/セル(可変)

Redshift 側で INT を使われていても、QuickSight のデータセット定義上で String として認識されているケースがまれにあります。もしまだご確認されていなければ、データセットの列一覧で型が意図通りか一度ご確認いただくとよいかもしれません。String として取り込まれると、固定 24 bytes + 桁数分のオーバーヘッドが発生し、Numeric の 12 bytes に対して倍
以上の容量になります。

同様に、日付を文字列(“2024-01-01” 等の 10 文字)で保持されている列があれば、24 + 10 = 34 bytes を消費しています。Date 型への変換で 12 bytes に抑えられます。

■ SPICE に入れる行数を絞る構成

こちらは既にご検討を頂いているかと思いますが、明細 5 億件をすべて SPICE に載せる以外の選択肢として、以下のような構成も考えられます。

  • 集約済みデータ(日次/週次集計)を SPICE に取り込み、高速な分析に使う
  • 対象期間を分析に必要な範囲(直近 3 ヶ月等)に絞る
  • 明細レベルのドリルダウンが必要な場合は、Redshift へのダイレクトクエリで参照する

1 つの分析内で SPICE データセットとダイレクトクエリデータセットを併用できますので、「速度が必要な集計は SPICE、明細参照は直接クエリ」という使い分けも可能です。

■ その他の観点

  • データセット定義上の計算フィールド(データ準備時に作成し、SPICE に物理保存されるもの)は通常のカラムと同様に容量を消費します。一方、分析上の計算フィールドはクエリ時にオンザフライで評価されるため、SPICE 容量には影響しません。もしデータセット側に不要な計算フィールドが残っていれば、整理いただくことで効果が見込めます。
  • 日本語カラム(商品名等)は UTF-8 で 3 bytes/文字となるため、英数字に比べて容量が大きくなります。

■ 事前見積の方法

公式の容量計算式で事前見積が可能です。小規模サンプル(1 万行程度)で実測し、全体を比例計算するなどご活用いただけますと幸いです。

参照: Importing data into SPICE - Amazon Quick

上記、ご確認のほどよろしくお願いいたします。

ご回答ありがとうございます。承知しました。見直し検討いたします。