如何:自我加入流分析?

时间:2015-06-15 02:06:53

标签: azure-stream-analytics cortana-intelligence

我试图用流分析工作中的最后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

1 个答案:

答案 0 :(得分:0)

很抱歉延迟回复此事。

最简单的解决方案是将ON DateDiff(第二个,[输入],[MV])BETWEEN 0和10更改为ON DateDiff(毫秒,[输入],[MV])= 0。

这是因为MV步骤中给出的时间戳是进入SlidingWindow的最后一个事件,并且这些事件与Input中事件的时间戳匹配(注意:时间单位越小,匹配越好但是如果你正在使用浏览器内测试经验,然后毫秒是支持的最小单位。

请注意,虽然在这里我们可以通过删除JOIN中的不必要的匹配来删除重复项,但一般来说,Stream Analytics没有机制通过DISTINCT或类似的东西删除重复项。

谢夫。