Neo4j时间序列聚合查询

Neo4j时间序列聚合查询,neo4j,neo4j.rb,Neo4j,Neo4j.rb,我有一个类似的年、月、日、小时、分钟图表,其中一分钟可能有0个或多个事件发生,而一个事件只能发生一次 我希望能够构建一个查询来匹配一段时间内的频率,例如 在过去7天内,每3小时至少发生2次事件 我可以获取过去7天内发生的所有事件,并按小时计数: "MATCH (e:Event)-[:occurred]-> (minute:`Time::Minute`)--> (hour:`Time::Hour`)--> (day:`Time

我有一个类似的年、月、日、小时、分钟图表,其中一分钟可能有0个或多个事件发生,而一个事件只能发生一次

我希望能够构建一个查询来匹配一段时间内的频率,例如

在过去7天内,每3小时至少发生2次事件

我可以获取过去7天内发生的所有事件,并按小时计数:

"MATCH (e:Event)-[:occurred]->
         (minute:`Time::Minute`)-->
         (hour:`Time::Hour`)-->
         (day:`Time::Day`)-->
         (month:`Time::Month`)-->
         (year:`Time::Year`)
WHERE  e.occurred_at > #{7.days.ago}
RETURN year, month, day, hour, COUNT(DISTINCT e)"

但我不知道如何扩展此查询以将事件计数分组为3小时。

我认为您只需扩展
返回值
即可获得
小时变量:

MATCH (e:Event)-[:occurred]->
         (minute:`Time::Minute`)-->
         (hour:`Time::Hour`)-->
         (day:`Time::Day`)-->
         (month:`Time::Month`)-->
         (year:`Time::Year`)
WHERE  e.occurred_at > #{7.days.ago}
RETURN year, month, day, hour - (hour % 3) AS hour_group, COUNT(DISTINCT e)

并不是说您应该养成使用Neo4j参数的习惯。这意味着当你在Ruby中查询时,
{7.days.ago}
的intead将有
{start\u time}
并传递一个
start\u time:7.days.ago
散列作为第二个参数。

更新后,我实际上意识到我正在做你建议的事情。我有过去7天按小时计算的事件数。事实上,我想知道过去7天中每3小时一次的事件计数。