查询中的Azure Stream Analytics'TimeStamp By'在工作中不起作用,但在测试中效果很好 [英] Azure Stream Analytics 'TimeStamp By' in query doesn't works on job but works fine on test

查看:58
本文介绍了查询中的Azure Stream Analytics'TimeStamp By'在工作中不起作用,但在测试中效果很好的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从事一个物联网项目.我有一个Raspberry pi,可将数据发送到Azure上的IoTHub.该集线器会将数据转发到Azure流分析作业.在我的查询中,我尝试在1分钟的TumblingWindow中汇总(此处为平均值)所有数据,但作为时间戳,我使用在数据中发送的自定义日期时间.

I'm working on a IoT project. I've a Raspberry pi which send data to an IoTHub on Azure. That Hub forwards that data to an Azure Stream Analytics Job. In my query I try to aggregate(here an average) all the data in a TumblingWindow of 1 minute but as a Timestamp I use a custom datetime sent in the data.

我尝试了很多事情,但似乎没有任何效果.流作业似乎忽略了我提供的日期时间,只是根据到达时间汇总了所有内容. 仅当通过上传json文件使用测试"功能时,该功能才有效.

I've tried many things but nothing seemed to work. the stream job seems to ignore the datetime I provide and just aggregate everything based on the arrival time. Only when using the "Test" functionality by uploading a json file does it works.

SELECT
    DateAdd(minute, -1, system.Timestamp) as TumblingWindowStartTime, 
    system.TimeStamp as TumblingWindowEndTime, 
    event.DeviceId as DeviceId, 
    AVG(event.Temperature) as TemperatureAverage,
    Count(*) as MeasurementsCount
INTO
    [input]
FROM
    [output] as event
TIMESTAMP BY MeasuredOn
GROUP BY
    event.DeviceId,
    TumblingWindow(minute, 1)

我发送的数据类型

[
   {
      "Temperature":13.426585352712585,
      "DeviceId":"UlyssesPi",
      "MeasuredOn":"2019-04-09T11:20:30.1027311Z"
   },
   {
      "Temperature":16.81523611620778,
      "DeviceId":"UlyssesPi",
      "MeasuredOn":"2019-04-09T11:20:35.2281002Z"
   },
   ...
]

我期望的是在Azure流分析上使用测试"功能时得到的信息:

What I'm expecting is what I get when using the "Test" functionality on Azure Stream Analytics :

TUMBLINGWINDOWSTARTTIME || TUMBLINGWINDOWENDTIME || DEVICEID || TEMPERATUREAVERAGE || MEASUREMENTSCOUNT
"2019-04-09T11:20:0...     "2019-04-09T11:21:0...   UlyssesPi   14.674093214798454    6
"2019-04-09T11:21:0...     "2019-04-09T11:22:0...   UlyssesPi   18.612186615873217    12
"2019-04-09T11:22:0...     "2019-04-09T11:23:0...   UlyssesPi   12.799415359568199    12

但是我得到以下信息:

TUMBLINGWINDOWSTARTTIME || TUMBLINGWINDOWENDTIME || DEVICEID || TEMPERATUREAVERAGE || MEASUREMENTSCOUNT
"2019-04-09 11:22:0...     "2019-04-09 11:23:0...   UlyssesPi   15,4994594331363      30

那么结果怎么不一样呢?我做错了什么吗?我该怎么办?

So how come the results aren't the same? Is it something I did wrong? What can I do?

感谢您的帮助.

推荐答案

在门户上测试Stream Analytics逻辑时,不会应用事件排序策略.但是,当您在云上运行作业时,将应用事件排序策略.您需要确保有效载荷中的时间戳准确(并且事件不会很晚到达).您还可以配置事件排序策略以定义延迟到达策略(默认值为5秒).您可以在此处中了解如何使用这些设置.

When testing your Stream Analytics logic on portal, event ordering policies don't get applied. However, when your running the job on cloud, the event ordering policies do get applied. You need to ensure the timestamps in your payload is accurate (and event aren't arriving very late). You can also configure the event ordering policies to define late arrival policies (default is 5 seconds). You can learn how to use those settings here.

这篇关于查询中的Azure Stream Analytics'TimeStamp By'在工作中不起作用,但在测试中效果很好的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆