gpt4 book ai didi

azure - 仅当找到至少一个与条件匹配的事件时才输出符合条件的事件,否则输出输入

转载 作者:行者123 更新时间:2023-12-03 00:13:30 25 4
gpt4 key购买 nike

我的输入有一个只有两个值的“条件”字段。我们只假设值“A”或“B”。

当在滚动窗口内找到至少一个条件=A的事件时,只应输出条件=A的事件。然而,当没有找到A的事件时,只有B的事件应该在同一窗口中输出。给定以下输入,滚动窗口为 4 个刻度:

  Condition   Time  
----------- ------
A T1
B T2
A T3
B T5
B T6
B T7
B T8
B T10
A T11
A T12
A T13
A T14
A T15

输出应如下所示:

  Condition   Time   (Window)  
----------- ------ ----------
A T1 T1-3
A T3 T1-3
B T5 T5-8
B T6 T5-8
B T7 T5-8
B T8 T5-8
A T11 T9-12
A T12 T9-12
A T13 T13-16
A T14 T13-16
A T15 T13-16

如何设置我的步骤,以便根据我的输入实现以下输出?我尝试了使用组的几种选项,但没有成功

最佳答案

这是一个有趣的问题。首先请允许我纠正您对窗口的定义。时间范围从 0 到 16 的 4 个刻度的窗口为:

( 0 -  4]
( 4 - 8]
( 8 - 12]
(12 - 16]

,其中排除开始时间并包括结束时间。结束时间是该窗口内计算结果的时间戳。

现在这是计算您的答案的查询。

WITH
count_as as (
SELECT
cnt = SUM(case cond when 'A' then 1 else 0 end)
FROM input TIMESTAMP BY time
GROUP BY tumblingwindow(second, 4)
)

SELECT
input.cond, input.time
FROM
count_as a
JOIN
input TIMESTAMP BY time
ON DATEDIFF(second, input, a) >= 0 AND DATEDIFF(second, input, a) < 4
WHERE
(a.cnt > 0 AND input.cond = 'A')
OR
(a.cnt = 0 AND input.cond = 'B')

count_as步骤计算窗口中 A 的数量。这将在窗口的每一端(本例中为 4、8、12 和 16 秒)生成一个事件,并显示最后 4 秒内看到的 A 的计数。

然后我们只需将它加入 input ,但只有最后 4 秒。我们需要小心定义时间界限(又名摆动空间)以正确地与窗口边界对齐。因此使用>=0 and <4而不是 between .

关于azure - 仅当找到至少一个与条件匹配的事件时才输出符合条件的事件,否则输出输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37301666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com