Azure Data Explorer:如何避免传感器数据重复摄入?
避免ADX插入重复传感器数据的简化方案
核心方案:表级唯一键约束 + 摄入时自动忽略重复记录
这是无需临时表的最简方案,步骤如下:
给目标表配置唯一键
先为存储传感器数据的ADX表,基于sensor_id和timestamp组合设置唯一键策略,让ADX能识别重复记录:.alter-merge table SensorData policy uniquekeys @'[{"columns": ["sensor_id", "timestamp"], "mode": "Enforce"}]'mode: Enforce会严格校验唯一键,确保重复组合不会被写入;如果只需要摄入阶段去重、不强制后续约束,也可以用mode: Soft。
摄入时开启忽略重复项
不管是用.ingest命令还是直接通过REST API提交数据,只需添加参数让ADX自动跳过重复的唯一键记录:- 用
.ingest命令的写法:.ingest into table SensorData (@'https://your-api-source/sensor-data-json') with (ignoreDuplicateRecords=true) - 用REST API提交摄入请求时,在请求体的
properties字段中加入:{ "properties": { "ignoreDuplicateRecords": true } }
每次拉取JSON数据摄入时,ADX会自动比对
sensor_id+timestamp组合,直接忽略已存在的记录,完全不需要临时表中转。- 用
额外注意事项
- 唯一键策略仅对新摄入的数据生效,不会清理表中已有的重复记录(若存在需手动处理)。
- 开启唯一键校验会带来轻微性能开销,但对于15分钟一次的常规拉取场景,基本可忽略。
内容的提问来源于stack exchange,提问作者Fabio Carello
相关产品推荐
相关产品推荐

