简化查询 Neo4j



请参阅下面的代码。它工作得很好。但是,请想象一下有多达数百个不同的案例 ID(她唯一的案例 ID 1 和 2)。我无法为每个案例 ID 编写单独的查询。有没有办法简化它?我已经找了好几天了..

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///running_to_csv.csv" AS row
WITH toInteger(row.case_id) AS cid, row
CREATE (event: Event {caseId: cid, activityName: row.activity, time: row.timestamp})
MATCH(event: Event)
WHERE event.caseId = 1
WITH event ORDER BY event.time ASC 
WITH apoc.coll.frequencies(apoc.coll.pairsMin(COLLECT(event.activityName))) AS g
UNWIND g AS p
RETURN*
MATCH(event: Event)
WHERE event.caseId = 2
WITH event ORDER BY event.time ASC 
WITH apoc.coll.frequencies(apoc.coll.pairsMin(COLLECT(event.activityName))) AS g
UNWIND g AS p
RETURN*

如果您只是省略"event.caseId = ..."行结果为假,因为顺序面向时间而不是 caseId。提前谢谢你。

似乎这应该有效,只需排序,然后按 caseId 收集,并在您通过 caseId 获得频率后但在展开之前按 caseId 进行另一个排序:

MATCH(event: Event)
WITH event.caseId as caseId, event 
ORDER BY event.time ASC 
WITH caseId, collect(event.activityName) as names
WITH caseId, apoc.coll.frequencies(apoc.coll.pairsMin(names)) AS g
ORDER BY caseId ASC
UNWIND g AS p
RETURN *

最新更新