You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Data Explorer中按数据类型应用自定义保留策略?

Azure Data Explorer行级条件数据自动删除方案

原生的ADX保留策略仅支持表或数据库级别,无法直接按单行的条件(如数据类型+对应保留天数)自动删除数据,因此原生方式无法满足你的需求。以下是几种可行的替代方案:

方案1:分区表+针对性保留策略

这是性能最优的方案,利用ADX的分区和表级保留策略实现自动过期删除:

  • 按数据类型拆分独立表,比如为每种数据类型创建单独的表(如Data_TypeA、Data_TypeB)。
  • 为每个表设置对应保留天数的软删除策略,ADX会自动后台清理过期数据。
  • ASP.NET Core应用导入数据时,将对应类型的数据写入到匹配的表中。

示例Kusto命令(设置表保留策略):

.alter table Data_TypeA policy retention softdelete = 7d
.alter table Data_TypeB policy retention softdelete = 30d

如果不想拆分表,也可以基于DataType字段结合时间字段创建表分区,再为不同分区配置保留策略,但拆分表的实现更简单直观。

方案2:周期性批量删除作业

通过定时任务执行Kusto删除命令,手动清理符合条件的过期数据:

  • 编写Kusto删除语句,根据数据类型和时间字段过滤过期数据:
.delete from YourMainTable where DataType == 'TypeA' and ingestion_time() < ago(7d)
.delete from YourMainTable where DataType == 'TypeB' and ingestion_time() < ago(30d)
  • 使用Azure Functions、Logic Apps或ADX自动化规则创建定时触发器(比如每日凌晨执行),调用ADX API执行上述命令。
  • 确保执行作业的身份拥有ADX数据库的delete权限。

注意:批量删除会消耗集群资源,建议避开业务高峰期,数据量较大时分批执行。

方案3:物化视图过滤保留数据

创建物化视图仅保留未过期的数据,应用查询时直接访问视图而非原始表:

  • 创建物化视图,过滤出符合保留条件的数据:
.create materialized view with (backfill=true) RetainedValidData on table YourMainTable
{
    *
    where 
        (DataType == 'TypeA' and ingestion_time() >= ago(7d))
        or (DataType == 'TypeB' and ingestion_time() >= ago(30d))
}
  • 调整ASP.NET Core应用的查询逻辑,使用RetainedValidData视图获取有效数据。
  • 原始表可设置较长保留策略,或配置归档策略将过期数据移至低成本冷存储,降低存储成本。

内容的提问来源于stack exchange,提问作者Mahsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:43:11