sql - 查询中的 Azure 流分析 'TimeStamp By' 无法在作业中运行,但在测试中运行良好

标签 sql azure timestamp iot azure-stream-analytics

我正在开发一个物联网项目。我有一个 Raspberry pi,它将数据发送到 Azure 上的 IoTHub。该中心将该数据转发到 Azure 流分析作业。在我的查询中,我尝试聚合(此处为平均值)1 分钟的 TumblingWindow 中的所有数据,但作为时间戳,我使用数据中发送的自定义日期时间。

我尝试了很多方法,但似乎没有任何效果。流作业似乎忽略了我提供的日期时间,只是根据到达时间聚合所有内容。 仅当通过上传 json 文件使用“测试”功能时才有效。

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 流分析上使用“测试”功能时得到的结果:

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

为什么结果不一样呢?难道是我做错了什么?我能做什么?

感谢您的帮助。

最佳答案

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

关于sql - 查询中的 Azure 流分析 'TimeStamp By' 无法在作业中运行,但在测试中运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55614746/

相关文章:

java - 将 java.sql.Timestamp 转换为 java.util.Calendar 而不会丢失精度

sql - 如何对 ID 字段进行分组并选择在另一个字段 PostgreSQL 中具有最高值的行

mysql - RESTRICT 和 NO ACTION 有什么区别?

azure - AZ cli 将 secret 添加到以连字符开头的 key 保管库

azure - 您如何决定 Azure 中最合适的大数据处理技术堆栈?

mysql - 如何在 MySQL 中以特定时间戳步长选择特定日期/时间范围内的所有行?

mysql - 根据条件返回行字段

php - 在查询中使用 echo

azure - 添加 Azure AD 目录成员作为 B2C 目录的全局管理员

hive - 向时间戳 Hive 添加分钟数