1

我正在尝试编写一个查询来获取 Clickhouse 中结果集的每一行的聚合指标。这个想法是,对于与分组 ID 匹配的每一行,我想为当前行之后的 60 秒选择一个时间窗口并获得某个值列的总和,但到目前为止,我一直无法弄清楚要实现的查询这个。以下是我尝试使用连接但出现错误的示例。我认为这归结为无法从外部查询访问子查询列:

select time, groupID, value, summed.addedValue 
from Events 
where groupID = 1234 as current
any inner join 
select groupID, sum(value) as addedValue 
from Events 
where groupID = 1234 and time < (current.time + 60) and time > current.time
group by groupID as summed

我想知道这种查询是否可以实现?它本质上是一个滑动 60 秒的窗口来获取总和值,但我希望它覆盖每个可能的 60 秒窗口,这就是为什么我要为每一行计算它的原因。也许 Clickhouse 中有一个函数可以实现这样的功能,或者在我们获得结果集后我必须在代码中执行此操作吗?

4

1 回答 1

0

ClickHouse 目前不支持相关子查询。

尽管您可以尝试以下操作:使用ARRAY JOINrange将 Events 表分解 60 次以生成带有 的新列time - N,这意味着该行time暂时属于存储桶,然后GROUP BY使用该列返回。

于 2018-07-30T08:32:46.177 回答