我试图用流分析工作中的最后10秒平均替换空值。 这需要在流和我在With子句中计算的平均值之间进行自联接。 它给了我重复(我得到相同的记录两次或三次)?有关错误或如何正确处理的任何建议? 我的疑问是:
WITH MV AS ( Select AVG([Sensor_1]) AS [Sensor_1] From [input] GROUP BY SlidingWindow(second, 10))
SELECT [input].[ID]
,[input].[Timestamp]
,[input].[Result]
,CASE
WHEN [input].[Sensor_1] = 0
THEN [MV].[Sensor_1] ELSE [input].[Sensor_1]
END [Sensor_1]
,[input].[Sensor_2]
,[input].[Sensor_3]
FROM [input]
LEFT OUTER JOIN [MV]
ON DateDiff(second, [input], [MV]) BETWEEN 0 AND 10
答案 0 :(得分:0)
很抱歉延迟回复此事。
最简单的解决方案是将ON DateDiff(第二个,[输入],[MV])BETWEEN 0和10更改为ON DateDiff(毫秒,[输入],[MV])= 0。
这是因为MV步骤中给出的时间戳是进入SlidingWindow的最后一个事件,并且这些事件与Input中事件的时间戳匹配(注意:时间单位越小,匹配越好但是如果你正在使用浏览器内测试经验,然后毫秒是支持的最小单位。
请注意,虽然在这里我们可以通过删除JOIN中的不必要的匹配来删除重复项,但一般来说,Stream Analytics没有机制通过DISTINCT或类似的东西删除重复项。
谢夫。