如何在Azure Data Explorer的Materialized View中过滤删除记录并保留最新有效数据?
Azure Data Explorer 物化视图过滤配置方案
完全可以实现你需要的两种过滤场景,具体通过以下KQL语句创建物化视图:
.create materialized-view with (backfill=true) FilteredRecordView on table YourOriginalTableName { YourOriginalTableName // 按ID分组,获取每个ID的最新插入时间 | summarize LatestUTCInsert = max(UTCInsertDate) by ID // 关联原表,定位每个ID对应最新时间的记录 | join kind=inner YourOriginalTableName on ID, $left.LatestUTCInsert == $right.UTCInsertDate // 过滤掉最新记录为已删除的ID,仅保留最新未删除的记录 | where IsDeleted == false // 保留需要的字段,根据实际需求调整 | project ID, /* 替换为你需要的其他字段,比如Value, Category等 */, UTCInsertDate, IsDeleted }
逻辑说明
- 针对场景1:通过
summarize+join精准锁定每个ID的最新记录,自动忽略该ID早于最新时间的所有旧条目,仅保留最新的未删除记录 - 针对场景2:
where IsDeleted == false直接过滤掉所有最新记录为已删除状态的ID,确保这类ID不会出现在视图中
注意事项
- 如果同一ID存在多条
UTCInsertDate完全相同的记录,建议在summarize或join环节加入额外唯一标识字段(比如主键),避免匹配到多条重复记录 backfill=true参数会让视图回溯原表历史数据生成初始结果,若不需要回溯可改为backfill=false- 可根据原表数据量和更新频率,通过
materialized-view的refreshPolicy参数调整视图刷新周期,优化性能
内容的提问来源于stack exchange,提问作者E75
相关产品推荐
相关产品推荐

