如何防止由于 blob 输入而导致 Stream 分析的值加倍

问题描述

我们在使用 blob 引用输入时在流分析中发现了一个问题。重新启动流后,它会为连接到它的事物打印双精度值。我认为这是在重新启动期间有超过 1 个 blob 处于活动状态的问题。目前,我们从 ADLS 中结构为 Output/{date}/{time}/Output.json 的文件夹路径中提取文件,最终是 Output/2021/04/16/01/25/Output.json。这些文件具有与流中的数据匹配的键:

    IoTData
LEFT JOIN kauiotblobref kio
ON kio.ParentID = IoTData.ConnectionString

我没有看到任何问题,但这些文件实际上是由天蓝色函数每分钟创建的。因此,在流分析开始期间,它可能会抓取最后一个和随后创建的那个。 (这是我的猜测,但我不确定我们将如何解决这个问题)。

这是问题的 powerBI 中的视觉效果

Peak

Trough

当查看它捕获的那个设备的 cosmosDB 时,这很容易解释,有两个条目具有相同的值、资产 ID、时间戳、不同的记录 ID(只是意味着 cosmosDB 将其计为两个单独的事件)。这是不可能的,因为我们无法从设备发送具有相同时间戳的重复项。

解决方法

这似乎是流分析中 blob 存储的核心问题,因为它通常需要 1 分钟以上才能开始。我发现解决的最好方法是在开始流备份之前停止相应的功能。致力于通过 CI/CD 管道实现自动化,这对于编辑流来说无论如何都是很好的做法。