在 Azure 流分析中跳跃 Window
Hopping Window in Azure Stream Analytics
我试图在 azure 流分析中了解 window 的跳跃。
我将从 Azure 事件中心获取以下数据:
[
{
"Id": "1",
"SensorData": [
{
"Timestamp": 1603112431,
"Type": "LineCrossing",
"Direction": "forward"
},
{
"Timestamp": 1603112431,
"Type": "LineCrossing",
"Direction": "forward"
}
],
"EventProcessedUtcTime": "2020-10-20T06:35:48.5890814Z",
"PartitionId": 1,
"EventEnqueuedUtcTime": "2020-10-20T06:35:48.3540000Z"
},
{
"Id": "1",
"SensorData": [
{
"Timestamp": 1603112430,
"Type": "LineCrossing",
"Direction": "backward"
}
],
"EventProcessedUtcTime": "2020-10-20T06:35:48.5890814Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2020-10-20T06:35:48.2140000Z"
}
]
我的查询如下所示:
SELECT s.Id, COUNT(data.ArrayValue.Direction) as Count
FROM [customers] s TIMESTAMP BY EventEnqueuedUtcTime
CROSS APPLY GetArrayElements(s.SensorData) AS data
WHERE data.ArrayValue.Type = 'LineCrossing'
AND data.ArrayValue.Direction = 'forward'
GROUP BY s.Id, HoppingWindow(second, 3600, 5)
我使用 Hopping Window 每隔 5 秒获取最后一天的所有事件。
我对给定的 dto 的期望是:Id1 和 Count 2 的一行,但我收到的是:720 行(所以 3600 除以 5)Id1 有 Count 2.
那些事件不应该被 HoppingWindow 函数聚合吗?
我按如下方式构建了您的查询:
with inputValues as (Select input.*, message.ArrayValue as Data from input CROSS APPLY GetArrayElements(input.SensorData) as message)
select inputValues.Id, count(Data.Direction) as Count
into output
from inputValues
where Data.Type = 'LineCrossing' and Data.Direction='forward'
GROUP BY inputValues.Id, HoppingWindow(second, 3600, 5)
我已经将输入设置为事件中心,并且在 Visual Studio 我已经开始使用云输入进行查询。
我使用 Windows Client application 将消息通过管道传输到事件中心(2. 从下图中)并观察到事件每 5 秒发生一次(1. 从下图和 3. 从下图)。
也许只是更改我共享的查询以反映正确的 time-stamping,但结果应该如预期的那样 - 每 5 秒计入最后一小时内到达的所有事件的定义条件的输出(HoppingWindow 函数中为 3600 秒)。
我试图在 azure 流分析中了解 window 的跳跃。 我将从 Azure 事件中心获取以下数据:
[
{
"Id": "1",
"SensorData": [
{
"Timestamp": 1603112431,
"Type": "LineCrossing",
"Direction": "forward"
},
{
"Timestamp": 1603112431,
"Type": "LineCrossing",
"Direction": "forward"
}
],
"EventProcessedUtcTime": "2020-10-20T06:35:48.5890814Z",
"PartitionId": 1,
"EventEnqueuedUtcTime": "2020-10-20T06:35:48.3540000Z"
},
{
"Id": "1",
"SensorData": [
{
"Timestamp": 1603112430,
"Type": "LineCrossing",
"Direction": "backward"
}
],
"EventProcessedUtcTime": "2020-10-20T06:35:48.5890814Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2020-10-20T06:35:48.2140000Z"
}
]
我的查询如下所示:
SELECT s.Id, COUNT(data.ArrayValue.Direction) as Count
FROM [customers] s TIMESTAMP BY EventEnqueuedUtcTime
CROSS APPLY GetArrayElements(s.SensorData) AS data
WHERE data.ArrayValue.Type = 'LineCrossing'
AND data.ArrayValue.Direction = 'forward'
GROUP BY s.Id, HoppingWindow(second, 3600, 5)
我使用 Hopping Window 每隔 5 秒获取最后一天的所有事件。 我对给定的 dto 的期望是:Id1 和 Count 2 的一行,但我收到的是:720 行(所以 3600 除以 5)Id1 有 Count 2.
那些事件不应该被 HoppingWindow 函数聚合吗?
我按如下方式构建了您的查询:
with inputValues as (Select input.*, message.ArrayValue as Data from input CROSS APPLY GetArrayElements(input.SensorData) as message)
select inputValues.Id, count(Data.Direction) as Count
into output
from inputValues
where Data.Type = 'LineCrossing' and Data.Direction='forward'
GROUP BY inputValues.Id, HoppingWindow(second, 3600, 5)
我已经将输入设置为事件中心,并且在 Visual Studio 我已经开始使用云输入进行查询。
我使用 Windows Client application 将消息通过管道传输到事件中心(2. 从下图中)并观察到事件每 5 秒发生一次(1. 从下图和 3. 从下图)。
也许只是更改我共享的查询以反映正确的 time-stamping,但结果应该如预期的那样 - 每 5 秒计入最后一小时内到达的所有事件的定义条件的输出(HoppingWindow 函数中为 3600 秒)。