このページでは、Explore の一部である
persist_forパラメータについて説明します。
persist_forは、persist_for(モデル用)パラメータのドキュメント ページで説明されているように、モデルの一部としても使用できます。
persist_forは、persist_for(派生テーブル用)パラメータのドキュメント ページで説明されているように、派生テーブルの一部としても使用できます。
用途
explore: explore_name {
persist_for: "1 hour"
}
|
階層
persist_for |
デフォルト値
モデルの persist_for 設定
許可
整数と期間(秒、分、時間)を含む文字列
特別なルール
explore レベルの persist_for 設定は、モデルレベルの persist_for 設定をオーバーライドします。 |
定義
Looker のキャッシュ ポリシーをデータベースの ETL(抽出、変換、読み込み)プロセスと同期するなど、より堅牢なキャッシュ管理を行うには、クエリのキャッシュ保存のドキュメント ページで説明されているように、
datagroupとpersist_withの使用を検討してください。
persist_for を使用すると、特定の Explore でキャッシュに保存されたクエリ結果が使用される期間を変更できます。Looker のデフォルトのキャッシュ保存期間は 1 時間です。キャッシュされた結果はLookerインスタンス上の暗号化ファイルに保存されます。
Looker におけるキャッシングの仕組みは次のとおりです。ユーザーが特定のクエリを実行すると、そのクエリの結果がキャッシュされます。persist_for で指定された間隔よりも短い時間内に、まったく同じクエリ(行数の上限など、すべてが同じである必要があります)が再度実行されると、キャッシュに保存された結果が返されます。それ以外の場合は、データベースに対して新しいクエリが実行されます。
persist_for 間隔が期限切れになると、データはキャッシュから削除されます。データがキャッシュに保存される期間については、クエリのキャッシングのドキュメント ページをご覧ください。
Explore とそのモデルの両方に persist_for が設定されている場合、その Explore に基づくクエリでは、Explore に設定された値が優先されます。
Explore では、クエリがキャッシュから返されたかどうかを確認したり、データベースから強制的に新しい結果を生成したりできます。詳細については、クエリのキャッシュ保存のドキュメント ページをご覧ください。
例
キャッシュの長さを 2 時間に調整します。
explore: my_explore {
persist_for: "2 hours"
}
キャッシュの長さを 30 分に調整します。
explore: my_explore {
persist_for: "30 minutes"
}
キャッシュ保存をオフにして、ユーザーがクエリのキャッシュ保存された結果を取得しないようにします。
explore: my_explore {
persist_for: "0 seconds"
}
注意点
persist_for が 0 seconds に設定されている場合、ユーザーのクエリはキャッシュからデータを取得しません。ただし、Looker では内部処理にディスク キャッシュが必要なため、persist_for が 0 seconds に設定されている場合でも、暗号化されたデータは常にキャッシュに書き込まれます。データがキャッシュに書き込まれると、削除フラグが設定されますが、最大 10 分間はディスク上に存在することがあります。詳しくは、クエリのキャッシングのドキュメント ページをご覧ください。
persist_for は必ずしもデータ インポートと一致しません
多くの企業では、分析データベースに毎日データをインポートしています。データが常に更新されるわけではないため、新しいクエリを実行しても意味がないと考え、キャッシュの長さを 24 時間(persist_for: 24 hours など)に設定することがあります。ただし、これでは、ユーザーが最新の更新よりも古いデータを取得することを防ぐことはできません。
たとえば、1 月 1 日の正午にクエリが実行され、1 月 2 日の朝に新しいデータがインポートされ、1 月 2 日の正午にクエリが再度実行されます。クエリは persist_for で指定された 24 時間の範囲内で実行されたため、1 月 2 日に新しいデータが読み込まれた場合でも、1 月 1 日のデータが返されます。
キャッシュ保存をデータ インポートと同期させる場合は、クエリのキャッシュ保存に関するドキュメントで説明されているように、データグループと
persist_withを使用します。
スケジュール設定された Look は結果をキャッシュに保存します
スケジュール設定された Look が実行されると、ユーザーが実行したクエリと同じ方法で、キャッシュに保存された結果セットが作成されます。特定の Look をプリキャッシュするには、Look を保存してスケジュールすることを検討してください。