Stream 流分析从历史中获得1年的平均值

Stream 流分析从历史中获得1年的平均值,stream,azure-stream-analytics,stream-analytics,Stream,Azure Stream Analytics,Stream Analytics,我有一份流分析的工作 投入: 1) “InputStreamCSV”-链接到事件中心并接收数据 2) “InputStreamHistory”-输入流链接BlobStorage 输出: 1) “AlertOUT”-链接到表存储并将报警事件作为行插入表中 我想计算2018年所有交易的平均金额(一个数字-5,2),并将其与2019年的交易进行比较: 如果新交易金额大于平均值-将该交易放入“AlertOUT”输出 我将平均数计算为: SELECT AVG(Amount) AS TresholdAmou

我有一份流分析的工作 投入:

1) “InputStreamCSV”-链接到事件中心并接收数据
2) “InputStreamHistory”-输入流链接BlobStorage

输出:
1) “AlertOUT”-链接到表存储并将报警事件作为行插入表中

我想计算2018年所有交易的平均金额(一个数字-5,2),并将其与2019年的交易进行比较:
如果新交易金额大于平均值-将该交易放入“AlertOUT”输出

我将平均数计算为:

SELECT AVG(Amount) AS TresholdAmount
FROM InputStreamHistory 
group by TumblingWindow(minute, 1)
接收新交易记录为:

SELECT * INTO AlertOUT FROM InputStreamCSV TIMESTAMP BY EventTime

我如何结合这两个查询来检查新交易金额是否大于去年的平均交易金额?

如果您将去年的平均交易金额与当前流进行比较,最好使用参考数据。使用asa本身或不同的查询引擎计算2018年的平均值。之后,您可以在asa查询中使用blob作为参考数据-它将替换示例中的平均计算

之后,您可以使用
inputStreamCsv
进行参考数据连接以生成警报

即使您希望每隔一段时间更新一次平均值,上述模式也会起作用。根据刷新频率,您可以使用另一个asa作业或批处理分析解决方案。

请使用asa sql中的运算符,您可以参考下面的sql来尝试组合2个查询sql

WITH 
t2 AS
(
    SELECT AVG(Amount) AS TresholdAmount
    FROM jsoninput2 
    group by TumblingWindow(minute, 1)
)
select t2.TresholdAmount
from jsoninput t1 TIMESTAMP BY EntryTime   
JOIN t2 
ON DATEDIFF(minute,t1,t2) BETWEEN 0 AND 5  
where t1.Amount > t2.TresholdAmount

如果历史数据是稳定的,您也可以将历史数据作为。请参考官方。

inputStreamHistory是历史数据,所以它是稳定的,对吗?如果是,您可以将其用作参考数据并将其连接到第二个sql。