如何:自行加入流分析?
Posted
技术标签:
【中文标题】如何:自行加入流分析?【英文标题】:How to: Self join Stream Analytics? 【发布时间】:2015-06-15 02:06:52 【问题描述】:我试图用流分析作业中的最后 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】:抱歉延迟回复。
最简单的解决方案是将 ON DateDiff(second, [input], [MV]) BETWEEN 0 AND 10 改为 ON DateDiff(millisecond, [input], [MV]) = 0。
这是因为 MV 步骤中给出的时间戳是进入 SlidingWindow 的最后一个事件的时间戳,并且这些时间戳与 Input 中事件的时间戳相匹配(注意:时间单位越小越好,但如果您正在使用浏览器内测试体验,那么毫秒是支持的最小单位。
请注意,虽然在这里我们可以通过删除 JOIN 中不必要的匹配项来删除重复项,但通常流分析没有通过 DISTINCT 或类似的方式删除重复项的机制。
Ziv.
【讨论】:
以上是关于如何:自行加入流分析?的主要内容,如果未能解决你的问题,请参考以下文章