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

Azure Data Explorer数据摄入阶段如何按时间差规则校验并排除异常数据

ADX摄入Event Hub数据时按时间差过滤事件的实现方案

完全可以在Azure Data Explorer(ADX)的摄入阶段实现该过滤逻辑,无需额外部署中间处理服务,通过ADX原生的更新策略即可实现无效事件的自动丢弃,具体操作步骤如下:

步骤1:创建临时原始摄入表

该表用于接收Event Hub上报的全量原始数据,无需长期留存,后续我们会为其配置极短的保留周期:

.create table RawWebEvents (
    timestamp: datetime,
    EventEnqueuedUtcTime: datetime,
    // 此处补充你业务所需的其他事件字段,例如 event_id:string, payload:dynamic 等
)

完成表创建后,将Event Hub的摄入连接绑定到该表,确保timestamp和EventEnqueuedUtcTime两个字段都能正确映射。

步骤2:创建最终存储的目标表

该表仅存储符合时间差要求的有效事件,结构和原始表保持一致:

.create table TargetWebEvents (
    timestamp: datetime,
    EventEnqueuedUtcTime: datetime,
    // 和原始表一一对应的其他业务字段
)

步骤3:定义过滤函数与更新策略

首先创建过滤规则函数,自定义时间差阈值,示例中设置的阈值为30分钟,可根据需求调整:

.create function FilterValidEvents() {
    RawWebEvents
    // 过滤规则:仅保留Event入队时间和客户端生成时间差值小于等于阈值的事件
    | where EventEnqueuedUtcTime - timestamp <= timespan(30m)
    // 若存在timestamp为空的异常数据,可额外添加条件 | where isnotnull(timestamp)
}

之后为原始表绑定更新策略,数据摄入时自动触发过滤,将有效数据同步到目标表:

.alter table RawWebEvents policy update ```
[
    {
        "IsEnabled": true,
        "Source": "RawWebEvents",
        "Query": "FilterValidEvents()",
        "Target": "TargetWebEvents",
        "TransactionSize": 1024,
        "PropagateIngestionProperties": true
    }
]

步骤4:配置原始表的短保留策略

避免无效的原始数据占用存储空间:

.alter table RawWebEvents policy retention softdelete = 0h recoverability = Disabled

逻辑说明

所有Event Hub上报的事件会先写入临时原始表,原始表数据写入后会立即自动清理,更新策略会在数据写入的同时完成过滤,仅符合条件的事件会被写入目标表留存,不符合条件的事件不会进入目标表,也不会在ADX中留存,完全满足你要求的摄入阶段过滤丢弃的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 01:00:01