Tech Waves

produced by Hakuhodo DY ONE

本ブログは、株式会社Hakuhodo DY ONEの開発チームによるエンジニアブログです。
それぞれのメンバーが業務を通して得た技術情報や、各種セミナーの参加レポート、またその他トピックについて情報発信を行っています。

データを更新したのにフィルターの選択肢に出てこない!?Lookerのキャッシュの注意点

こんにちは、廣本です🔄。
今回はLookerのキャッシュについてまとめてみました。

 

Lookerのキャッシュの仕組み

Lookerでは、キャッシュされたSQLクエリを使用することができます。キャッシュを使用することで、データベースにかかる負荷を軽減し、パフォーマンスを向上させることが可能です。

Lookerのキャッシュの保持期間はデフォルトで1時間となっていますが、ModelまたはExplorer単位で変更することもできます。

設定手順は下記の通りです。

  1. Modelファイルに下記を記述する
  2. datagroupパラメータ内でmax_cache_ageを定義する
  3. 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フィールドで変更することが可能です。

設定手順は下記の通りです。

  1. Viewファイルに下記を記述する
  2. dimensionまたはfilterパラメータ内でsuggest_persist_forを定義する

<Viewファイルの記述例>

dimension: name {
  sql: ${TABLE}.name ;;
  suggest_persist_for: "30 minutes"
}


私も以前、この落とし穴にはまってしまったことがあります。

テーブルの更新にともない、ダッシュボード画面を確認した際、「グラフで表示されている項目が、フィルターの選択肢には出てこない」という事象が起きました。同じExplorerを参照しているにも関わらず、なぜ表示されないのか分からなかったため、サポートに問い合わせたところ、今回の件が判明しました。

以降、dimensionfilterを設定する際は、お作法的にsuggest_persist_forを定義するようにしています。

まとめ

今回はLookerのキャッシュについてまとめてみました。

少しでも参考になれば幸いです。

参照記事

 

この記事を書いた人

廣本 (id:hrhrkun)

以前はBIの開発業務を担当。今はナレッジマネジメントの推進や、AIエージェントの開発をメインにいろいろ行っています。