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

如何使用Azure TSI Gen2 Rest APIs计算停机时间报表

针对该需求的可行实现方案

以下方案完全基于Azure TSI REST API实现,无需借助额外计算资源:

方案1:单API请求直接返回计算结果(推荐)

依托Azure TSI Gen2查询API的内置函数能力,可在单次请求中完成全部计算逻辑,直接返回各段停机时长:

  • 调用TSI Query - GetSeries接口,请求参数按以下规则配置:
    1. 限定查询的时间范围、筛选指定plc_id的设备数据
    2. 排序规则设置为按时间戳升序排列
    3. 新增计算列「状态变更标记」,使用内置$prev函数判断连续状态是否中断,表达式为:$event.status != $prev($event.status) ? 1 : ($ts.timeIntervalIndex == 0 ? 1 : 0)
    4. 对状态变更标记做累加求和生成「区间组ID」,同时添加筛选条件仅保留status=0的时序点,同组ID的所有点属于同一段连续停机区间
    5. 最后按区间组ID聚合,分别取每组的最小时间戳(区间起始)和最大时间戳(区间结束),二者差值即为对应区间的停机时长

方案2:轻量拆分实现

如果不想编写复杂的TSI查询表达式,可拆分为两步API调用实现:

  • 第一步调用GetSeries接口,拉取目标时间范围、指定plc_id的全量时序数据,请求中设置按时间戳升序、仅返回status和timestamp两个字段
  • 第二步可直接在API请求中添加筛选条件过滤掉所有status=1的点,遍历返回结果识别连续时间戳的区间,计算起止差值即可

关键注意事项

  • 需提前将业务上报的timestamp字段设置为TSI时序模型的时间戳属性,否则TSI默认会使用IoT Hub数据接入的系统时间,会导致计算误差
  • 数据量超过单页返回上限时,需携带API返回的延续标记(continuation token)发起后续请求,拉取全量数据
  • 批量查询多设备停机时长时,可在查询逻辑中新增按plc_id分组的规则,单次请求即可返回所有设备的统计结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:24:06