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

Azure Data Explorer中插入IoT数据时计算存储kWh增量值的方法

解决方案:通过ADX更新策略自动计算并写入kWh差值表

前提假设

  • 已存在存储原始IoT数据的主表,假设名为EnergyMetrics,结构为:deviceId:string, timestamp:datetime, kWh:real
  • 已完成IoT Hub到该主表的摄入配置

步骤1:创建差值目标表

首先创建用于存储kWh差值的目标表,结构匹配计算结果:

.create table EnergyDeltaMetrics (
    deviceId:string,
    timestamp:datetime,
    delta_kWh:real
)

步骤2:为主表配置更新策略

利用ADX的更新策略,在原始数据插入主表时自动触发差值计算,并将结果写入目标表。执行以下Kusto命令:

.alter table EnergyMetrics policy update @'[
    {
        "IsEnabled": true,
        "Source": "EnergyMetrics",
        "Query": "EnergyMetrics | partition by deviceId sort by timestamp asc | extend delta_kWh = kWh - prev(kWh) | where delta_kWh > 0 | project deviceId, timestamp, delta_kWh",
        "Destination": "EnergyDeltaMetrics",
        "IsTransactional": false,
        "PropagateIngestionProperties": false
    }
]'

关键逻辑说明

  • partition by deviceId:确保按设备维度单独计算差值,避免跨设备的历史数据干扰
  • sort by timestamp asc:严格按时间顺序取当前设备的上一条累计值,保证差值计算的准确性
  • where delta_kWh > 0:过滤异常场景(如设备重启导致累计值重置),仅保留合理的正向差值;若需处理重置场景,可调整为delta_kWh = iif(delta_kWh < 0, kWh, delta_kWh)
  • project:仅将需要的字段写入目标表,减少冗余数据

验证效果

向主表插入测试数据:

.append EnergyMetrics <| dynamic([
    {"deviceId": "abc-123", "timestamp": datetime(2022-05-08T00:00:00Z), "kWh": 234.2},
    {"deviceId": "abc-123", "timestamp": datetime(2022-05-08T01:00:00Z), "kWh": 240.5},
    {"deviceId": "abc-123", "timestamp": datetime(2022-05-08T02:00:00Z), "kWh": 245.1}
])

查询目标表EnergyDeltaMetrics,应得到以下结果:

deviceIdtimestampdelta_kWh
abc-1232022-05-08T01:00:00.000Z6.3
abc-1232022-05-08T02:00:00.000Z4.6

(第一条记录因无前置数据,不会生成差值记录)

替代方案:流式摄入时直接分流计算

若IoT数据是通过流式方式摄入ADX,可直接创建流查询,同时将原始数据写入主表、计算后的差值写入目标表:

.create-or-alter streaming ingestion policy on EnergyMetrics enable

.create-or-alter function CalculateEnergyDelta() {
    stream_into EnergyMetrics
    | partition by deviceId sort by timestamp asc
    | extend delta_kWh = kWh - prev(kWh)
    | where delta_kWh > 0
    | project deviceId, timestamp, delta_kWh
    | stream_into EnergyDeltaMetrics
}

这种方式适合端到端的流式处理场景,无需依赖主表的更新策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:01:03