クエリリソース消費を節約するには?

Datahubでは、クエリ実行毎に消費されるクエリリソースについて、月間上限が定められています。ここでは、クエリリソース消費を抑える方法について紹介します。

前提

  • クエリリソースは、1回のクエリ実行毎に消費されます
  • クエリが参照する元データの量が大きくなるほど、消費するクエリリソースも大きくなります

節約方法

karte_eventテーブルなど分割されたテーブルに対するクエリの参照範囲を狭くする

たとえばkarte_eventテーブルは日付毎に分割された形でデータ格納されています。そのため、不要に長い期間のデータを抽出すると、無駄にクエリリソースを消費してしまうことになります。

karte_eventテーブルなど分割されたテーブルについては、クエリで参照する範囲を狭くすることでクエリリソース消費を節約できます。

中間テーブルを利用する

たとえば次のような状況があったとします。

  • ジョブフローを使って日次でクエリ実行している
  • 全てのクエリで、直近1年間分のkarte_eventテーブルを参照している

一般的には、karte_eventテーブルを1年間分参照するというのはクエリリソースを大きく消費します。

このような状況では、次のように中間テーブルを作成・利用することでクエリリソース消費量を節約することができます。

  • テーブルを作成する(これを中間テーブルとする)
  • 中間テーブルに、直近1年間分のkarte_eventテーブルからクエリで必要なデータだけを抜き出したものを格納する
  • 日次のジョブフローを次のように修正します
    • 直近1日分のkarte_eventテーブルのデータを使って中間テーブルを差分更新する
    • 元々のクエリを、karte_eventテーブルの代わりに中間テーブルを参照するように変更する

これにより、「毎日1年間分のkarte_eventテーブル」を参照する必要があったのが、「毎日1日分の1年間分のkarte_eventテーブル+軽量な中間テーブル」だけをクエリで参照すればよくなり、クエリリソース消費量が節約できます。