persist_for(适用于探索广告系列)

此页面涉及 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 [提取、转换和加载] 流程同步),请考虑使用 缓存查询文档页面中所述的 datagrouppersist_with

persist_for 可让您修改缓存的查询结果用于指定探索的时间量。Looker 中的默认缓存时长为 1 小时。缓存结果存储在 Looker 实例上的加密文件中。

Looker 中的缓存机制如下:用户运行特定查询后,系统会缓存该查询的结果。如果再次运行完全相同的查询(所有内容都必须相同,包括行数限制等),且距离上次运行的时间不到 persist_for 指定的时间间隔,则系统会返回缓存的结果。否则,系统会针对您的数据库运行新查询。

persist_for 时间间隔到期时,系统会从缓存中删除数据。如需了解数据在缓存中的存储时长,请参阅缓存查询文档页面。

如果为探索和其模型都设置了 persist_for,则基于相应探索的查询将优先采用为探索设置的值。

在探索中,您可以查看查询是否从缓存中返回,也可以强制从数据库中生成新结果。如需了解详情,请参阅缓存查询文档页面。

示例

将缓存时长调整为 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。