ADX缓存关联物化视图/存储函数查询结果,如何强制刷新?
强制刷新ADX中物化视图/存储函数Lookup缓存的方法
针对关联物化视图(bar_mv)的场景
- 手动触发物化视图刷新:直接对依赖的
bar_mv执行刷新命令,强制更新其数据,确保关联的foo_mv下次刷新时能获取最新结果:.refresh materialized-view bar_mv - 配置自动刷新策略:如果需要定期自动更新数据,可在创建
bar_mv时指定refreshPolicy,设置合适的刷新频率:.create materialized-view bar_mv with (refreshPolicy = "period 5m") on table your_source_table { // bar_mv的查询定义 } - 在Lookup时强制刷新:修改
foo_mv的定义,在lookup语句中添加hint.materialized_view_refresh = true,让物化视图每次刷新都强制拉取bar_mv的最新数据:.create materialized-view with (dimensionMaterializedViews = "bar_mv") foo_mv on table events_table{ events_table |lookup materialized_view('bar_mv') with (hint.materialized_view_refresh = true) on a,b,c |where TIMESTAMP > LAST_FOO_TS }
针对关联存储函数(bar_v)的场景
- 绕过查询缓存:在lookup语句中添加
hint.cache = false,强制每次查询都重新执行存储函数获取最新结果,修改后的foo_mv1定义如下:.create materialized-view foo_mv1 on table events_table{ events_table |lookup bar_v() with (hint.cache = false) on a,b,c |where TIMESTAMP > LAST_FOO_TS } - 清除全局查询缓存:若需彻底清除所有查询缓存(谨慎使用,会影响所有正在运行的查询),执行以下命令:
.clear querycache - 触发函数缓存失效:对存储函数
bar_v进行无意义修改(比如添加空格后重新保存),系统会自动失效原有缓存,下次调用时重新生成结果。
内容的提问来源于stack exchange,提问作者Bart
相关产品推荐
相关产品推荐

