gpt4 book ai didi

sql - 使用 BY TIMESTAMP 进行滚动窗口的 Azure 流分析查询在测试中工作正常,但在运行作业结果中关闭

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

我正在开发一个物联网项目。我有一个 Raspberry pi,它将智能电表数据发送到 Azure 上的 IoT 事件中心。我使用 Azure 流分析作业读取数据。仪表读数每 10 秒发送一次。

我创建的查询之一使用滚动窗口计算每小时的耗电量。它使用滞后计算此窗口的最大仪表读数减去前一个窗口的最大仪表读数。我使用物联网设备的时间戳而不是默认到达时间。

WITH onehourwindow AS
(
SELECT
max(total_low) * 1000 as max_low,
max(total_high) * 1000 as max_high,
max(gas) * 1000 as max_gas,
round(avg(current_consumption), 1) as avg_consumption,
max(timestamp) as max_timestamp
FROM
eventhuninputsmartmeter TIMESTAMP BY timestamp
GROUP BY TUMBLINGWINDOW(hour, 1)
)

SELECT
(max_low - LAG(max_low) OVER (LIMIT DURATION(hour, 1))) / 1000 as total_consumption_low,
(max_high - LAG(max_high) OVER (LIMIT DURATION(hour, 1))) / 1000 as total_consumption_high,
(max_gas - LAG(max_gas) OVER (LIMIT DURATION(hour, 1))) / 1000 as total_consumption_gas,
avg_consumption,
max_timestamp
INTO
MeterReadingSQLDB
FROM
onehourwindow

查询返回测试中的预期结果。以下是测试结果中的时间戳和消耗的示例。正如预期的那样,最新时间戳(最大值)是该小时 59 分 50 秒左右的最后一次仪表读数。

|----------------------------|---------------------------|
| max_timestamp | total_consumption_high |
|----------------------------|---------------------------|
|2020-02-28T22:59:52.1794730 | 1.171 |
|2020-02-28T21:59:51.6680430 | 0.500 |
|----------------------------|---------------------------|

当我运行查询作业时,我将以下结果写入 SQL 数据库。现在,最新时间戳 (max) 不是(时钟)小时的最后一次仪表读数,而是 54 分钟。如果我手动进行消耗计算,我可以看到使用的窗口是一小时,它只是不是从 00 开始,而是每小时 55 分钟开始。

|----------------------------|---------------------------|
| max_timestamp | total_consumption_high |
|----------------------------|---------------------------|
|2020-02-28T22:54:52.1300000 | 1.353 |
|2020-02-28T21:54:51.6830000 | 0.510 |
|----------------------------|---------------------------|

如何解决这个问题?我已经尝试了很多方法,但似乎无法解决它。下面帖子的答案看起来很有希望,但我的事件不会迟到,绝对不会迟到 6 分钟。因此仍然使用默认的事件排序策略。

Azure Stream Analytics 'TimeStamp By' in query doesn't works on job but works fine on test

有什么想法可以解决此问题,以便我在 59 分 50 秒左右获得窗口的最大时间戳?

谢谢!

托马斯

最佳答案

根据您的详细描述:您的测试作业很好,输出了您想要的结果,我认为sql可能按预期工作。您可以考虑流数据源端的原因和ASA作业的设置。

I am using the timestamp from the IOT device instead of the default arrival time.

基于statements根据ASA TIMESTAMP BY文档,自定义时间戳可能会因网络或其他因素而导致延迟。

enter image description here

我建议您设置offsize Windows Function 中的参数来平衡这一差距。

关于sql - 使用 BY TIMESTAMP 进行滚动窗口的 Azure 流分析查询在测试中工作正常,但在运行作业结果中关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60460530/

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