スナップショットを使って更新頻度の低いデータに掛かるコストを減らしてみる

DataPortalにてレポートのデータ読み込みコストを抑えるため、スナップショットについての仕組みを調べつつ使ってみました。
2022.02.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

DataPortalのレポートに多量のデータを使う際、ロード時間が超過しがちです。対策の一つにデータ量抑制という手もありますが、長期間のデータをレポート化したい時には避けがたいものです。

ある程度のボリュームになるデータを読み込み抑えつつも扱えないものかとドキュメントを見ていたところ、データソースのスナップショット化にたどり着きました。BigQueryで行うスナップショットではないのがポイントです。

DataPortalでのスナップショット作成

扱う際の注意点としては以下の通り。

  • 上限100MB

  • 既に作成済みのデータソースが対象となる

  • 更新を掛けない限り、内容は変わらない

データポータルのパフォーマンスを上げる - データポータルのヘルプ - https://support.google.com/

仕組みとしては以下のようになります。ソースとしたデータソースは定期的に更新されるものの、スナップショットは特定時点のデータソースを固定で持ち続けます。

更新頻度が高くない、あるいは不要な場合にはとても使いやすい仕組みですが、100MBが上限となる点だけ注意しましょう。BigQueryを対象とする場合は、事前にテーブルサイズを確認したり、レポート上で扱う要素の合計データサイズを確認しておくことも大切です。

実際に作成してみる

まずはスナップショットの対象にするデータソースを作っておきます。これはBigQueryでも構いませんし、コストを抑えてのお試しにしたい場合はSpreadsheetでも問題ありません。

データソース化しおえたら、次にデータの抽出を選びます。

「Select a data source」にて先程のデータソースを選択します。「サイズ」・「指標」・「期間」についてはレポート上で用いる要素を予め指定しておくことになります。重要なポイントとして、レポート上でデータの統合を行う場合には統合キーの要素も忘れず「サイズ」に含めておきます

スナップショットとデータソースはDataPortalエクスプローラ上で見分け難いため、データソース名には snapshot 等区別できるフレーズを入れておきましょう。

定期更新したい場合には忘れずに「自動更新」を有効にしてから、繰り返しの設定を適切なものにしておきましょう。「保存して抽出」を選択して完了です。

レポートに用いる

「リソース」の「追加済みのデータソースの管理」から「データソースを追加」を選択します。「マイデータソース」の中から作成したデータソースを選択し、レポート上のグラフにデータソースとして設定して完了です。初回はデータ量にもよりますが、2回目からは高速に表示されるはずです。

あとがき

BigQueryを直接データソースにした場合は更新不要でも12時間起きにコストが発生してしまうため、なにか対策はないものかと試行錯誤していました。「データの抽出」を使うと解決できていたことはありますが、既に作成済みのデータソースをソースにするという点を理解できていませんでした。

データの抽出を使ったことで、現在の課題は100MBより上のデータ量をどう扱うか、というところになっています。これについては引き続き模索していきます。