2015-11-05 88 views
1

我有一個類似於http://neo4j.com/docs/1.9.4/cypher-cookbook-path-tree.html的年,月,日,小時和分鐘圖,其中一分鐘可能有0個或更多事件發生,並且事件只能發生一次。Neo4j時間序列聚合查詢

我希望能夠建立一個查詢匹配頻率一段時間,如

有沒有出現每3小時爲過去7天內至少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小時。

回答

1

我想你只是需要擴展RETURNhour變量:

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_time}並傳入start_time: 7.days.ago散列作爲第二個參數。

+0

更新,我實際上意識到我在做你的建議。我在過去7天內按小時計事件數。我其實希望在過去的7天裏每3個小時都有一次活動。 – user1012802

+0

啊,我覺得不是很難。看看我的編輯! –