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

标签 neo4j timestamp time-series cypher

我想在 Neo4j 中存储为时间树的时间序列上构建直方图。 数据结构是用户完成的事件,每个事件都有时间戳,例如用户购买类别。 我需要的是每个用户在开始时间和结束时间之间对每个类别的浏览次数,间隔为(1秒到天) 正如我读到的 neo4j documentation 我的模型非常出色地表现了图数据库我找不到任何方法可以在一个查询中完成此操作,而且我担心调用每个用户会非常慢。

Time tree model

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

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 时间树模型是否可选? 如果是这样怎么办? :-)

最佳答案

这个有用吗?

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

基本上,我只是将 event.timestamp % 1000*60*10 添加到返回值中,以便 Neo4j 将其用作分组标准

关于Neo4j cypher 时间树的时间间隔直方图查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31785783/

相关文章:

neo4j - CYPHER 查询中的 LIKE 子句

java - Neo4j SPARQL 插件 REST 使用

php - Doctrine2 默认时间戳格式为 "0000-00-00 00:00:00"?

c++ - 获取当前小时 unix 时间戳

r - ggTimeSeries 手动连续颜色

ruby - 带有自签名证书的 Neo4j gem https

import - neo4j apoc 导入/导出不起作用。如何修改neo4j.conf文件?

iOS获取UTC时间戳

python - Pandas - 时间序列按组移动

java - 根据时间数组重新采样数据 - JAVA