クエリリソース消費を節約するには?
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テーブル+軽量な中間テーブル」だけをクエリで参照すればよくなり、クエリリソース消費量が節約できます。
Updated 12 months ago