neo4j - 如何使用 Cypher 从 Neo4j 中的时间序列表构建折线图?
问题描述
如何使用 Cypher 从 Neo4j 中的时间序列表构建折线图?
例如:
这是一张桌子
id | event | timestamp
----------------------
1 | event1 | 10:00 AM
1 | event2 | 10:15 AM
1 | event3 | 10:30 AM
. | . | .
. | . | .
. | . | .
1 | event100 | 8:00 PM
2 | event25 | 10:10 AM
2 | event30 | 10:20 AM
2 | event150 | 11:20 AM
. | . | .
. | . | .
. | . | .
所以我想对事件进行分组id
并根据时间戳对它们进行排序,并为每个组构建这样的图表
event1 -> event2 -> ... -> event100
和
event25 -> event30 -> event150 -> ...
解决方案
如果您乐于将APOC 插件添加到您的数据库中,那么您所描述的是一个可以使用apoc.nodes.link
.
一些示例数据:
MERGE (e1: Event { id: 1, event: 'Event1', timestamp: localdatetime('20200323T10:00:00') })
MERGE (e2: Event { id: 1, event: 'Event3', timestamp: localdatetime('20200323T10:20:00') })
MERGE (e3: Event { id: 1, event: 'Event2', timestamp: localdatetime('20200323T10:05:00') })
MERGE (e4: Event { id: 2, event: 'Event5', timestamp: localdatetime('20200323T10:08:00') })
MERGE (e5: Event { id: 2, event: 'Event4', timestamp: localdatetime('20200323T10:00:00') })
然后我们可以对链表进行分组、排序和创建:
MATCH (e: Event)
WITH e ORDER BY e.timestamp
WITH e.id as id, collect(e) as nodes
CALL apoc.nodes.link(nodes, 'PRECEDES')
RETURN nodes
推荐阅读
- go - 在 Go 中查找句子中的单词列表
- c# - 在 Entity Framework Core 中保存一对多关系
- c++ - Qt Widget C++ 自动调整为更小的屏幕(见屏幕截图)
- java - 在springboot中为@Scheduled方法设置执行顺序
- r - 在 R 中保留日期格式
- sql - 通过 PowerShell ISE 从 SQL Server 更改 Export-CSV 文件中的语言
- ssh - Gcloud SSH 隧道代理始终通过美国,甚至来自其他地区
- javascript - ReactJS - 将道具传递给子组件但无法在子组件中访问它
- python - 无法删除 CSV 中的重复项
- python - 如何在不刷新 Django 页面的情况下将用户名呈现为文本?