0

我的 Azure IoT Hub 和 Azure 流分析工作遇到了一个非常奇怪的问题。

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

现在到了奇怪的部分——只有第一个传感器(它自己运行了将近 3 天)发送的数据通过分析作业并发送到 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)

我见过其他类似的问题,但公认的答案是微软存在错误。

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

谢谢你。

4

2 回答 2

2

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

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

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

于 2016-03-17T20:08:18.167 回答
1

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

于 2016-03-18T01:46:57.317 回答