0

我有输入的流分析工作:

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

输出:
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

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

4

2 回答 2

1

请在 ASA sql 中使用JOIN运算符,您可以参考下面的 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

如果历史数据稳定,您也可以加入历史数据作为参考数据。请参考官方样本

于 2019-01-25T09:50:53.907 回答
0

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

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

即使您想偶尔更新平均值,上述模式也可以使用。根据刷新频率,您可以使用另一个作业或批处理分析解决方案。

于 2019-01-25T09:50:49.230 回答