相关疑难解决方法(0)

如何编写一个选择查询或服务器端函数,从多个数据点生成一个整洁的时间流图?

注意:我使用的是图形数据库(OrientDB是特定的).这使我可以自由地在javascript或groovy中编写服务器端函数,而不是将自己限制为SQL以解决此问题.*

注2:由于这是一个图形数据库,下面的箭头只是描述数据流.我不需要在查询中返回箭头.箭头代表关系.*

我有以时间流方式表示的数据; 即EventC发生在EventA之后的EventB之后,等等.这些数据来自多个来源,所以它不是完全线性的.它需要聚集在一起,这就是我遇到问题的地方.

目前数据看起来像这样:

#     |  event   |  next
--------------------------
12:0  |  EventA  |  12:1
12:1  |  EventB  |  12:2
12:2  |  EventC  |  
12:3  |  EventA  |  12:4
12:4  |  EventD  |  
Run Code Online (Sandbox Code Playgroud)

其中"next"是时间流中下一个事件的out()边缘.在图表上,这看起来像:

EventA-->EventB-->EventC
EventA-->EventD
Run Code Online (Sandbox Code Playgroud)

由于这些数据需要聚集在一起,我需要合并重复事件但保留它们的边缘.换句话说,我需要一个选择查询,结果将导致:

        -->EventB-->EventC
EventA--|
        -->EventD
Run Code Online (Sandbox Code Playgroud)

在此示例中,由于EventB和EventD都发生在EventA之后(仅在不同时间),因此select查询将显示EventA的两个分支,而不是两个单独的时间流.


编辑#2

如果要将一组额外的数据添加到上面的数据中,使用EventB-> EventE,结果数据/图形将如下所示:

#     |  event   |  next
--------------------------
12:0  |  EventA  |  12:1
12:1  |  EventB  |  12:2
12:2  |  EventC  |  
12:3  |  EventA  |  12:4
12:4  |  EventD  |  
12:5  |  EventB  | …
Run Code Online (Sandbox Code Playgroud)

sql graph-databases orientdb

7
推荐指数
1
解决办法
816
查看次数

标签 统计

graph-databases ×1

orientdb ×1

sql ×1