从单个选择中输出多个记录,并使用Stream Analytics输出



是否可以从流中的单个选择中动态输出多个记录?

例如,我以以下格式接收事件:

{
    "value": 600,
    "duration": 300
}

持续时间为秒

如何使用持续时间的平均值输出每秒的记录?下面的东西,只有300次?

SELECT 
    value / duration AS value
    1 AS duration
FROM Input

我认为返回数组记录也可以,因为可以使用CROSS APPLY GetArrayElements

将其转换为单独的事件

今天流式分析查询语言是不可直接的 - 请继续关注即将到来的可扩展性改进。

您也许可以使用HoppingWindow进行常规事件(例如每秒),然后与您的流一起加入每秒生成事件的情况,即它们不超过[持续时间]秒之前的事件。

类似的东西:

WITH
InputWithTimestamp AS
(
    SELECT 
        System.Timestamp as timestamp, [value], [duration]
    FROM input 
),
RegularEvents AS
(
    SELECT
        System.Timestamp as timestamp, 
        count()
    FROM InputWithTimestamp
    GROUP BY HoppingWindow(second, 1000, 1) -- assuming at least one event arrives evry 1000 seconds
)
SELECT 
    RegularEvents.timestamp,
    InputWithTimestamp.value/InputWithTimestamp.[duration] as [value]
 FROM
    RegularEvents
JOIN
    InputWithTimestamp
ON DATEDIFF(second, RegularEvents, InputWithTimestamp) BETWEEN 0 AND 1000 -- assuming 1000 is max possible duration
AND DATEDIFF(second, RegularEvents.timestamp, InputWithTimestamp.timestamp) BETWEEN 0 AND InputWithTimestamp.[duration]

最新更新