如何:自行加入流分析?

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.

【讨论】:

以上是关于如何:自行加入流分析?的主要内容,如果未能解决你的问题,请参考以下文章

Azure 流分析 - 加入 csv 文件返回 0 行

如何防止由于 blob 输入而导致流分析的值加倍

流分析聚合窗口

流分析查询以排除记录

流分析地理空间功能使用

nowcoder网络流Birthday 思维建图