如何让Google Looker告警查询获取数据库新鲜数据(无需修改持久时长)
解决Google Looker告警强制从数据库获取新鲜数据的问题
无需修改Explore/Model全局缓存时长的解决方案:
方法1:针对告警查询单独设置缓存过期为0
- 进入告警配置页面,点击「Edit Query」编辑告警使用的查询
- 在查询界面的「Advanced Options」(高级选项)中,找到「Cache Persistence」(缓存持久化)设置
- 将持久时长改为
0分钟,保存查询并更新告警配置
这个设置仅作用于当前告警查询,不会影响其他Explore或Model的缓存策略,每次告警触发时都会直接从数据库拉取最新数据。
方法2:基于SQL Runner创建告警查询
- 打开Looker的「SQL Runner」,编写告警需要的查询语句
- 执行查询确认结果符合预期后,点击「Save as Look」保存为查询视图
- 基于这个保存的查询创建告警
SQL Runner默认不启用缓存(除非手动配置),因此对应的告警每次执行都会直接查询数据库。
方法3:添加动态参数触发缓存失效(hack式方案)
如果无法修改缓存设置,可以在查询中加入一个随时间变化的无意义参数,让每次执行的缓存键唯一:-- 在查询的过滤条件或字段中加入类似计算 AND FLOOR(EXTRACT(MINUTE FROM CURRENT_TIMESTAMP)/15) = FLOOR(EXTRACT(MINUTE FROM CURRENT_TIMESTAMP)/15)由于每15分钟这个计算值会变化,Looker会判定为新查询,从而绕过缓存直接访问数据库。
验证方式
修改配置后,查看告警的执行日志,确认查询的源时间不再固定为整小时,而是每次告警触发的实际时间,说明已成功绕过缓存获取新鲜数据。
内容的提问来源于stack exchange,提问作者KMatton
相关产品推荐
相关产品推荐

