Azure 流分析作业截断数据
Azure Stream Analytics job truncates data
我的 Azure IoT 中心和 Azure 流分析作业遇到了一个很奇怪的问题。
长话短说:我配置了一个 Azure IoT Hub 实例以从 Raspberry PI 3 上获取一些天气数据,该 Raspberry PI 3 附有传感器;然后,我配置了一个 Azure 流分析作业以从 IoT 中心获取数据并将其放入 DocumentDB 集合中——在配置阶段,我将 sensorId 设置为分区键。 运行完成工作将近 3 天后,我又买了一些传感器(具有不同的 ID)并将它们添加到 Raspberry PI - 正在收集数据并将其发送到 Azure IoT 中心,没有任何所有 3 个附加传感器的问题(使用设备资源管理器检查传输)。
现在出现了奇怪的部分 - 只有第一个传感器发送的数据(运行 自己发送了将近 3 天的数据)正在通过分析作业并发送到 DocumentDB - 在我看到的门户中我有很多输入事件,但我看到 0 个输出事件(尽管数据正在通过)。
为了排除任何其他问题,我编写了一个小型控制台应用程序,"listens" 到 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)
我见过其他类似的问题,但公认的答案是 Microsoft 存在错误。
有什么调试方法吗?
谢谢。
我的错....我不小心发现了这个问题 - 在 documentdb 中,我只看到来自一个传感器的记录,而不是来自其他 2 个传感器的记录,我不明白为什么,但在查看了我编写的查询之后在分析控制台中,我意识到那只是我的错。
场景是这样的:我将 documentdb 的作业输出配置为将 executionTime 字段作为行键,但该值对于所有 3 个传感器都是相同的,我想在第一次插入 DocumentDB 后,另一个两个给出了某种错误(我不熟悉 DocumentDB - 我知道 SQL 服务器),这就是我认为发生的事情。
我更改了查询并将另一个字段作为行键,一切正常。希望我足够清楚。
没错,ASA 中的 DocDb 输出根据指定的 DocumentId 列执行基于补丁(合并)的更新插入(插入或替换)。干杯!
我的 Azure IoT 中心和 Azure 流分析作业遇到了一个很奇怪的问题。
长话短说:我配置了一个 Azure IoT Hub 实例以从 Raspberry PI 3 上获取一些天气数据,该 Raspberry PI 3 附有传感器;然后,我配置了一个 Azure 流分析作业以从 IoT 中心获取数据并将其放入 DocumentDB 集合中——在配置阶段,我将 sensorId 设置为分区键。 运行完成工作将近 3 天后,我又买了一些传感器(具有不同的 ID)并将它们添加到 Raspberry PI - 正在收集数据并将其发送到 Azure IoT 中心,没有任何所有 3 个附加传感器的问题(使用设备资源管理器检查传输)。
现在出现了奇怪的部分 - 只有第一个传感器发送的数据(运行 自己发送了将近 3 天的数据)正在通过分析作业并发送到 DocumentDB - 在我看到的门户中我有很多输入事件,但我看到 0 个输出事件(尽管数据正在通过)。
为了排除任何其他问题,我编写了一个小型控制台应用程序,"listens" 到 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)
我见过其他类似的问题,但公认的答案是 Microsoft 存在错误。
有什么调试方法吗?
谢谢。
我的错....我不小心发现了这个问题 - 在 documentdb 中,我只看到来自一个传感器的记录,而不是来自其他 2 个传感器的记录,我不明白为什么,但在查看了我编写的查询之后在分析控制台中,我意识到那只是我的错。
场景是这样的:我将 documentdb 的作业输出配置为将 executionTime 字段作为行键,但该值对于所有 3 个传感器都是相同的,我想在第一次插入 DocumentDB 后,另一个两个给出了某种错误(我不熟悉 DocumentDB - 我知道 SQL 服务器),这就是我认为发生的事情。
我更改了查询并将另一个字段作为行键,一切正常。希望我足够清楚。
没错,ASA 中的 DocDb 输出根据指定的 DocumentId 列执行基于补丁(合并)的更新插入(插入或替换)。干杯!