Neo4j cypher时间间隔直方图查询时间树

时间:2015-08-03 11:13:56

标签: neo4j timestamp time-series cypher

我想在neo4j中建立一个存储为时间树的时间序列直方图。 数据结构是由用户完成的事件,每个用户都有时间戳,比如用户购买类别。 我需要的是每个用户在开始和结束时间之间浏览每个类别的次数,间隔为(1秒到几天) 我的模型功能很棒,因为我阅读neo4j documentation我在一个查询中找不到任何方法可以做到这一点,我担心每个用户的调用都会非常慢。

Time tree model

我知道cypher功能,但我不知道如何创建这样的查询。 我正在寻找这样的东西(不工作)

MATCH startPath=(root)-[:`2010`]->()-[:`12`]->()-[:`31`]->(startLeaf),
endPath=(root)-[:`2011`]->()-[:`01`]->()-[:`03`]->(endLeaf),
valuePath=(startLeaf)-[:NEXT*0..]->(middle)-[:NEXT*0..]->(endLeaf),
vals=(middle)-[:VALUE]->(event)
WHERE root.name = 'Root'
RETURN event.name, count(*)
ORDER BY event.name ASC
GROUP BY event.timestamp % 1000*60*10 // 10 minutes histogram bar 

然后,我想要一份报告,了解有多少用户浏览到每个网站类别:

0-9新闻5,商业3; 10-19新闻6,商业19; 1 20-29新闻2,商业8;

知道neo4j时树模型是否可选? 如果是这样的话? : - )

1 个答案:

答案 0 :(得分:2)

这有用吗?

@ A | B

基本上我只是将MATCH startPath=(root)-[:`2010`]->()-[:`12`]->()-[:`31`]->(startLeaf), endPath=(root)-[:`2011`]->()-[:`01`]->()-[:`03`]->(endLeaf), valuePath=(startLeaf)-[:NEXT*0..]->(middle)-[:NEXT*0..]->(endLeaf), vals=(middle)-[:VALUE]->(event) WHERE root.name = 'Root' RETURN event.name, event.timestamp % 1000*60*10 AS slice, count(*) ORDER BY slice ASC 添加到回复中,以便Neo4j将其用作分组标准