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

Azure Event Hubs时序数据导入Time Series Insights显示异常排查

问题分析与解决方案

这个问题我之前帮不少开发者排查过,核心问题出在你发送消息的格式和Time Series Insights(TSI)的事件解析逻辑不匹配上,具体原因和解决办法如下:

为什么会出现事件合并?

你现在是把多个独立事件打包在一个顶级JSON对象的Events数组里,作为单条消息发送到Event Hubs。而TSI默认会把从Event Hubs收到的每一条完整消息当作一个独立事件来处理——也就是说,整个包含Events数组的JSON会被识别为一个事件,数组里的所有子事件数据会被合并到同一个时间点展示(通常是消息的入队时间,或者TSI自动选取的某个时间字段),这就导致你看到338个事件被合并成一个点。

解决办法

方法1:拆分消息发送(最直接)

把Events数组里的每个子元素拆出来,作为单独的Event Hubs消息发送。比如原来的数组里有2个事件,就发2条独立的JSON消息:

{"Location":"XXXXX", "EquipmentID": "XXXXXX", "Timestamp": "2018-04-06T12:45:00Z",...}
{"Location":"XXXXX", "EquipmentID": "XXXXXX", "Timestamp": "2018-04-06T12:45:01Z",...}

这样TSI会把每条消息当作独立事件,自动读取每个消息里的Timestamp字段来展示。

方法2:配置TSI解析数组事件(适合批量发送场景)

如果必须批量发送数组格式的消息,可以在TSI的事件源设置里开启数组解析功能:

  • 登录Azure门户,找到你的TSI环境,进入对应的Event Hubs事件源配置页面
  • 在「事件序列化」部分,选择JSON作为事件格式
  • 开启「数组解析」选项,这样TSI会自动把JSON数组里的每个元素当作独立事件处理
  • 同时一定要确认「时间戳属性名称」设置为Timestamp(注意大小写要和你的JSON字段完全匹配),而不是使用默认的入队时间

关键验证点

最后别忘了检查TSI事件源的时间戳配置:确保你明确指定了Timestamp作为时间戳字段,而不是让TSI默认使用Event Hubs的入队时间。如果这个配置错了,即使拆分了消息,TSI还是会用入队时间展示,可能出现不符合预期的情况。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:54:04