我有一个相当奇怪的问题,我的Azure IoT集线器和Azure流分析工作。
长话短说:我配置了一个Azure IoT集线器实例,以便从带有传感器的Raspberry PI 3中获取一些天气数据;然后,我配置了一个Azure Stream作业,将来自IoT集线器的数据收集到DocumentDB集合中--在配置阶段,我将sensorId设置为分区键。在运行了将近3天之后,我购买了更多的传感器(具有不同的is ),并将它们添加到Raspberry PI中--这些数据正在收集并发送到Azure IoT集线器,所有3个附加传感器都没有任何问题(使用设备资源管理器检查传输)。
现在出现了奇怪的部分--只有第一个传感器发送的数据(它自己运行了将近3天)正在通过分析工作并发送到DocumentDB --在门户中,我看到我有很多输入事件,但是我看到了0输出事件(尽管数据正在通过)。
为了排除任何其他问题,我编写了一个小型控制台应用程序,用于“侦听”传入消息的IoT集线器,实际上,所有传感器都在向IoT集线器发送数据。
用于分析作业的查询如下:
SELECT
sensorId,
avg(humidity) as avghumidity,
avg(temperatureFromHumidity) as avgtemperatureFromHumidity,
avg(objectTemperature) as avgobjectTemperature,
avg(temperatureFromIr) as avgtemperatureFromIr,
avg(pressure) as avgpressure,
avg(lux) as avglux,
System.TimeStamp AS executionTime
INTO
[XXX-document-db]
FROM
[home-meteo] TIMESTAMP BY currentTime
GROUP BY
sensorId,
TumblingWindow(second, 30)我也看到过其他类似的问题,但大家都接受的答案是,微软有一个bug。
有没有办法调试这个东西?
谢谢。
发布于 2016-03-17 20:08:18
我的错..。我无意中发现了这个问题--在文档数据库中,我只看到了一个传感器的记录,而没有看到另一个传感器的记录,也不知道为什么,但是在查看了我在分析控制台中写的查询之后,我意识到这只是我的错。
场景是这样的:我将DocumentDB的作业输出配置为将executionTime字段作为行键,但是对于所有3个传感器来说,这个值是相同的,我设想在第一个插入到documentdb之后,另外两个出现了某种错误(我不熟悉DocumentDB --我知道Server),这就是我认为发生的情况。
我更改查询,并将另一个字段作为行键,一切都进行得很顺利。希望我说的够清楚了。
发布于 2016-03-18 01:46:57
没错,ASA中的DocDb输出根据指定的DocumentId列进行基于修补程序(合并)的向上插入(插入或替换)。干杯!
https://stackoverflow.com/questions/36055122
复制相似问题