Как построить линейный график из таблицы временных рядов в Neo4j, используя Cypher? - PullRequest
0 голосов
/ 21 марта 2020

Как построить линейный график из таблицы временных рядов в Neo4j, используя Cypher?

Например:

Вот таблица

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 -> ...

1 Ответ

1 голос
/ 23 марта 2020

Если вы счастливы, добавив плагин APO C в свою базу данных, вы описываете связанный список, который можно создать с помощью 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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...