Azure stream analytics azure Stream analytics是第一个也是最后一个查询

Azure stream analytics azure Stream analytics是第一个也是最后一个查询,azure-stream-analytics,stream-analytics,Azure Stream Analytics,Stream Analytics,我的有效载荷如下。我需要每1分钟获得第一个不同的批处理值。请让我知道如何使用isfirst和lag或last实现流内分析 输出如下: 批次=01,“2015-01-01T00:00:01.0000000 Z” 批次=02,“2015-01-01T00:00:03.0000000 Z” 批次=03,“2015-01-01T00:00:06.0000000 Z” 批次=01,“2015-01-01T00:00:14.0000000 Z” 批次=02,“2015-01-01T00:00:18.0000

我的有效载荷如下。我需要每1分钟获得第一个不同的批处理值。请让我知道如何使用isfirst和lag或last实现流内分析

输出如下:

批次=01,“2015-01-01T00:00:01.0000000 Z” 批次=02,“2015-01-01T00:00:03.0000000 Z” 批次=03,“2015-01-01T00:00:06.0000000 Z” 批次=01,“2015-01-01T00:00:14.0000000 Z” 批次=02,“2015-01-01T00:00:18.0000000 Z” 批次=03,“2015-01-01T00:00:22.0000000 Z” 批次=01,“2015-01-01T00:00:27.0000000 Z” 批次=01,“2015-01-01T00:00:31.0000000 Z”


我试图将您的要求总结如下:

输入示例,在分钟窗口中,每个批次ID可以有多个VAL更改:

品牌:批次1,Val:01,品牌:批次1,Val:01,品牌:批次1,Val:02, 品牌:批次1,val:02××××××××××××品牌:批次2,val:01, 制造商:批次2,val:01,XXXXXXXXX

所需输出,每批更改仅val,无重复:

品牌:批次1,val:01品牌:批次1,val:02品牌:批次2,val:01

答案分为两部分:

1.在静态期间收集数据,您可以使用内置的,如下所示:

2.没有像distinct这样的内置ASA函数来过滤重复项。我建议您使用
分组依据
MAX
ASA UDF
()来接近您的结果

SQL:

测试输出:

顺便说一句,我只是在UDF中使用下面的代码

var date = new Date(datetime);
    return date.getTime();


另一个解决方法是,您可以在1分钟内收集所有数据,然后在Azure功能中使用,您可以根据需要处理数据。例如,使用JSON对象存储数据。键值结构可以过滤重复的行。

Hi,mbr。实际上,我无法理解您的担忧。您想在1分钟窗口中实现类似于
TOP
的功能吗?嗨,Jay,谢谢您的回答,很抱歉我不清楚。在一分钟窗口中,每个批次ID可以有多个VAL更改。例如:在几分钟内,我可以得到Make:batch1,VAL:01,Make:batch1,VAL:01,Make:batch1,VAL:02,Make:batch1,val:02××××××××××××××××××××××××Make:batch2,val:01,Make:batch2,val:01,xxxxxxxxx从这个我只需要为每一批更改筛选val,没有重复。我需要输出Make:batch1,val:01 Make:batch1,val:02 Make:batch2,val:01当然还有我提到的第一篇博文中提到的原始时间戳。谢谢Jay的回复。你的逻辑工作,但在第一种情况下,我需要TS作为日期时间格式。是的,我们可以考虑第二个选项,但我必须做这在流分析单独。第一次进近时有没有带正确时间戳的输入?
 SELECT g.Payload.Make,g.Payload.VAL,max(udf.convertdate(g.Payload.TS)) as TS
    FROM geoinput g TIMESTAMP BY g.Payload.TS
    GROUP BY g.Payload.Make,g.Payload.VAL, TumblingWindow(Duration(minute, 1))
var date = new Date(datetime);
    return date.getTime();