
こんにちは、廣本です🔄。
今回はLookerのキャッシュについてまとめてみました。
Lookerのキャッシュの仕組み
Lookerでは、キャッシュされたSQLクエリを使用することができます。キャッシュを使用することで、データベースにかかる負荷を軽減し、パフォーマンスを向上させることが可能です。
Lookerのキャッシュの保持期間はデフォルトで1時間となっていますが、ModelまたはExplorer単位で変更することもできます。
設定手順は下記の通りです。
- Modelファイルに下記を記述する
datagroupパラメータ内でmax_cache_ageを定義する- Explore単位で指定する場合は、
explorerパラメータ内でpersist_withを定義する
<Modelファイルの記述例>
customers_dataでは2時間のキャッシュ保持期間が適用され、orders_dataでは24時間のキャッシュ保持期間が適用されます。
datagroup: customers_datagroup {
max_cache_age: "2 hours"
}
datagroup: orders_datagroup {
max_cache_age: "24 hours"
}
explore: customers_data {
persist_with: customers_datagroup
…
}
explore: orders_data {
persist_with: orders_datagroup
…
}
なお、テーブルの変更を即時反映させたい等、キャッシュを保持させたくない場合は、max_cache_age を"0 seconds"に設定します。
Lookerのキャッシュの注意点:フィルターの選択肢のキャッシュ
便利なLookerのキャッシュ機能ですが、ダッシュボードでフィルターを表示している場合は注意が必要です。フィルター選択肢のキャッシュには、ModelやExplorerとは別のキャッシュが使用されます。
フィルター選択肢のキャッシュの、デフォルトの保持期間は6時間になっており、DimensionフィールドまたはFilterフィールドで変更することが可能です。
設定手順は下記の通りです。
- Viewファイルに下記を記述する
dimensionまたはfilterパラメータ内でsuggest_persist_forを定義する
<Viewファイルの記述例>
dimension: name {
sql: ${TABLE}.name ;;
suggest_persist_for: "30 minutes"
}
私も以前、この落とし穴にはまってしまったことがあります。
テーブルの更新にともない、ダッシュボード画面を確認した際、「グラフで表示されている項目が、フィルターの選択肢には出てこない」という事象が起きました。同じExplorerを参照しているにも関わらず、なぜ表示されないのか分からなかったため、サポートに問い合わせたところ、今回の件が判明しました。
以降、dimensionとfilterを設定する際は、お作法的にsuggest_persist_forを定義するようにしています。
まとめ
今回はLookerのキャッシュについてまとめてみました。
少しでも参考になれば幸いです。
参照記事