如何在Azure Stream Analytics中按分组计算累计和?
在Azure Stream Analytics中按分组计算累计和的实现方法
可以通过Azure Stream Analytics支持的开窗函数实现按分组计算累计和,具体使用SUM() OVER()子句来完成。
输入数据示例
TMS product amount 2023-06-01 10:00:00 P1 10 2023-06-01 10:00:20 P2 40 2023-06-01 10:00:25 P2 30 2023-06-01 10:01:05 P1 20 2023-06-01 10:01:20 P2 60 2023-06-01 10:01:25 P1 70
期望输出示例
TMS product cum_sum 2023-06-01 10:00:00 P1 10 2023-06-01 10:00:20 P2 40 2023-06-01 10:00:25 P2 70 2023-06-01 10:01:05 P1 30 2023-06-01 10:01:20 P2 140 2023-06-01 10:01:25 P1 100
实现查询语句
SELECT TMS, product, SUM(amount) OVER ( PARTITION BY product ORDER BY TMS ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS cum_sum INTO [YourOutputSink] FROM [YourInputSource]
语句说明
PARTITION BY product:将数据按product字段分组,确保累计和仅在同一产品组内计算。ORDER BY TMS:指定每组内数据按时间戳TMS升序排列,保证累计和按时间顺序累加。ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW:定义计算范围为当前组的第一条记录到当前记录,这是SUM() OVER()的默认范围,可省略,但显式写出更清晰。
执行该查询后,即可得到按产品分组、按时间顺序计算的累计和结果,与期望输出一致。
内容的提问来源于stack exchange,提问作者josh66
相关产品推荐
相关产品推荐

