gpt4 book ai didi

azure - 使用 Azure 流分析保留最后的值

转载 作者:行者123 更新时间:2023-12-03 04:17:35 24 4
gpt4 key购买 nike

我们通过 IoT 中心收集设备事件,然后使用流分析进行处理。我们希望生成包含每个测量的最后一个值的状态概览。然后,状态将写入 CosmosDB 输出,每个设备一个文档。

简化的查询如下所示:

SELECT
device_id as id,
LAST(value) OVER (PARTITION BY device_id LIMIT DURATION(day, 1) WHEN name = 'battery_status') AS battery_status
INTO status
FROM iothub

生成的文档应该是(也经过简化):

{
"id": "8c03b6cef760",
"battery_status": 95
}

问题在于,并非所有事件都包含 Battery_status,只要最后一个具有 Battery_status 的事件早于指定的持续时间,CosmosDB 文档中的最后一个值就会被 NULL 覆盖。

我需要的是一些构造来在没有数据时完全省略该值,从而保留输出文档中的最后一个值。我有什么想法可以实现这一目标吗?

最佳答案

目前 Azure 流分析不支持将输出分区到 CosmosDB对于每个设备。有两种解决方法。

  1. 您可以选择 Azure Function 来解决此问题。在 Azure 函数中,您可以创建 IoT 中心触发器,使用 battery_status 属性筛选数据,然后以编程方式将数据存储到每个设备的 CosmosDB。

  2. 您可以选择Azure存储容器而不是CosmosDB,然后将Azure存储容器配置为Azure IoT Hub中的端点和消息路由,请参阅IoT Hub Endpoints本教程介绍如何 save IoT hub messages that contain sensor data to your Azure blob storage 。在 route配置中,您可以添加查询字符串来过滤数据。

关于azure - 使用 Azure 流分析保留最后的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51782772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com