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

本页介绍的是 persist_for 参数,该参数是 探索的一部分。

persist_for 也可以作为模型的一部分使用,如 persist_for(适用于模型) 参数文档页面中所述。

persist_for 也可以作为派生表的一部分使用,如 persist_for(适用于派生表) 参数文档页面中所述。

用法


explore: explore_name {
  persist_for: "1 hour"
}
层次结构
persist_for
默认值
模型的 persist_for 设置

接受
一个字符串,其中包含一个整数,后跟一个时间范围(秒、分钟或小时)

特殊规则
persist_for 级别的 explore 设置会覆盖模型级别的 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。