Azure Data Explorer表能否在保留策略中指定UTC时间删除数据?
Azure Data Explorer 数据保留:指定UTC时段的问题
关键说明
ADX的原生保留策略是基于数据摄入时间的相对时长,没办法直接指定固定UTC时间段(比如你要的00:15到次日00:15)。你当前的配置和预期逻辑不符。
你的配置解析
你运行的命令:
.alter table TableName policy retention { "SoftDeletePeriod": "1.00:15:00", "Recoverability": "Enabled" }
这个设置是让数据在摄入后1天15分钟进入软删除状态,和UTC时间点无关。举个例子:如果一条数据是UTC 14:30摄入的,它会在UTC次日14:45被软删除,而不是你想要的次日00:15。
实现固定UTC时段保留的方法
要实现“仅保留UTC 00:15至次日00:15的数据”,需要组合使用其他ADX功能:
方案1:分区策略+定时删除
先给表配置分区策略,按UTC 00:15的边界划分分区:
.alter table TableName policy partitioning { "PartitionKeys": [ { "ColumnName": "ingestion_time()", "Kind": "Uniform", "Interval": 1d, "Offset": "00:15:00" } ] }这里的
Offset参数会让每个分区刚好对应你要的UTC时间窗口。然后通过定时任务(比如Azure Functions、Logic Apps),每天UTC 00:15之后执行分区删除命令,清理前一个窗口的旧数据:
.drop table TableName partitions (datetime(YYYY-MM-DD 00:15:00)..datetime(YYYY-MM-DD+1 00:15:00))可替换命令中的具体日期为Kusto动态函数,比如
startofday(now()) - 1d + 15m来自动生成时间范围。
方案2:查询层面过滤(无需物理删除)
如果不需要物理删除数据,只是查询时只返回目标窗口的数据,可以在查询语句中固定过滤条件:
TableName | where ingestion_time() between (startofday(now()) + 15m) .. (startofday(now()) + 1d + 15m)
这种方式更轻量,无需修改表策略,仅在查询时控制结果范围。
内容的提问来源于stack exchange,提问作者Alejandro Alvarez
相关产品推荐
相关产品推荐

