【发布时间】:2017-10-23 11:04:05
【问题描述】:
我在 Neo4j 中有下图。在下图中Subscriber 是在不同时间执行不同操作的实体。动作是图中的关系(Complained、Recharged、Enquired、Clicked)。
我的要求是编写 Cypher 查询以获取所有 Subscriber 的所有下一个操作(例如:我希望查询找到所有完成 Recharged 的 Subscriber 执行的下一个操作是什么使用RechargeType=TT 进行操作。我需要根据时间(ActionTime)获取下一个操作
我还提供了在编写以下查询后返回的 .xls 中获取图表的全部数据的链接。
match(n)-[r]->(k)
return n, r, type(r), k
下面的查询返回所有 RechargeType='TT' 的订阅者的详细信息。我需要的是密码查询,以根据“ActionTime”获取这些订阅者立即采取的下一步行动,并根据所采取的行动(充值、点击、投诉、查询)对它们进行分组。
查询: match(n:Subscriber)-[r:Recharged]->(k) 其中 r.RechargeType='TT' 返回 n, r, type(r), k;
如果需要任何进一步的细节/解释来回答我的问题,请告诉我..
编辑:图形数据已被修改,使得执行的所有操作(在本例中为关系)的操作时间相同,并且修改后的图形图像已上传。
【问题讨论】:
-
你的意思是“根据时间获取下一个动作(例如RechargeTime,CallTime))”?另外,到目前为止,您尝试过什么?谢谢!
-
我的意思是询问订阅者执行的下一个操作,并根据执行的操作(关系)对其进行分组。需要使用关系的“时间”属性(例如,CallTime、RechargeTime)找到立即的下一个动作。请参考附图。
-
是否不可行将所有时间属性重命名为
Time而不是RechargeTime、CallTime等?我认为这可以简化您的查询...此外,“操作类型”存储在关系中(已充电、已单击等)。 -
@BrunoPeres 是的,同意,如果重命名所有“时间”属性将简化查询。因此,让我们假设所有时间属性为“时间”。 Recharged、Clicked 等是关系类型,我不会将其存储在关系中,如果需要,我也可以这样做。我是 Neo4j 的新手,所以不确定最好的方法。让我知道我是否需要存储动作类型,如果是,那么满足我要求的查询将是什么。谢谢!!
-
@BrunoPeres 根据您的建议编辑了问题。对方法和查询有任何想法。