streamazure-stream-analyticsstream-analytics

Stream analytics getting average for 1 year from history


I have Stream Analytics job with INPUTS:

1) "InputStreamCSV" - linked to Event hub and recievies data . InputStreamHistory
2) "InputStreamHistory" - Input stream linked BlobStorage. InputStreamCSV

OUTPUTS:
1) "AlertOUT" - linked to table storage and inserts alarm event as row in table

I want to calculate AVERAGE amount for all transactions for year 2018(one number - 5,2) and compare it with transaction, that is comming in 2019:
If new transaction amount is bigger than average - put that transaction in "AlertOUT" output.

I am calculating average as :

SELECT AVG(Amount) AS TresholdAmount
FROM InputStreamHistory 
group by TumblingWindow(minute, 1)

Recieving new transaction as:

SELECT * INTO AlertOUT FROM InputStreamCSV TIMESTAMP BY EventTime

How can I combine this 2 queries to be able to check if new transaction amount is bigger than average transactions amount for last year?


Solution

  • If you are comparing last year's average with current stream, it would be better to use reference data. Compute the averages for 2018 using either asa itself or a different query engine to a storage blob. After that you can use the blob as reference data in asa query - it will replace the average computation in your example.

    After that you can do a reference data join with inputStreamCsv to produce alerts.

    Even if you would like to update the averages once in a while, above pattern would work. Based on the refresh frequency, you can either use another asa job or a batch analytics solution.