Azure Stream Analytics作业会截断数据

时间:2016-03-17 08:28:13

标签: azure azure-cosmosdb cortana-intelligence azure-stream-analytics azure-iot-hub

我的Azure IoT Hub和Azure Stream Analytics工作遇到了一个奇怪的问题。

长话短说:我配置了一个Azure IoT Hub实例,以从Raspberry PI 3获取一些天气数据,该数据附有传感器;然后,我配置了一个Azure Stream Analytics作业来从IoT集线器获取数据并将其放入DocumentDB集合 - 在配置阶段,我将sensorId设置为分区键。在运行了近3天的工作后,我又购买了一些传感器(具有不同的ID)并将它们添加到Raspberry PI中 - 正在收集数据并将其发送到Azure IoT Hub而不会对所有3个连接的传感器产生任何问题(选中)使用设备资源管理器进行传输。

现在出现了奇怪的部分 - 只有第一个传感器发送的数据(自己运行了近3天的数据)正在通过Analytics工作并发送到DocumentDB - 在门户网站中我看到我有很多输入事件,但我看到0输出事件(虽然数据正在通过)。

为了排除任何其他问题,我写了一个小型控制台应用程序,它“收听”物联网中心的传入消息,实际上,所有传感器都在向物联网中心发送数据。

用于分析作业的查询如下:

    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)

我看到其他问题有些类似,但接受的答案是微软有一个错误。

有什么办法可以调试这个东西吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

我的坏......意外地我发现了这个问题 - 在documentdb中我只看到了一个传感器的记录,但没有看到其他2个记录,并且没有理解为什么但是在看了我写的查询之后在分析控制台中,我意识到这只是我的错。

场景是这样的:我配置了documentdb的作业输出,将executionTime字段作为行键,但是这个值对于所有3个传感器都是相同的,我想在第一次插入DocumentDB之后,另外两个给出了某种错误(我不熟悉DocumentDB - 我知道SQL Server),这就是我认为发生的事情。

我更改了查询并将另一个字段作为行键,一切都很顺利。希望我足够清楚。

答案 1 :(得分:1)

没错,ASA中的DocDb输出基于指定的DocumentId列执行基于补丁(合并)的upsert(插入或替换)。干杯!