Упростить запрос Neo4j - PullRequest
       7

Упростить запрос Neo4j

0 голосов
/ 27 января 2019

пожалуйста, смотрите код ниже. Работает отлично. Тем не менее, представьте себе, что существует до сотни различных идентификаторов (только ее идентификаторы 1 и 2). Я не могу написать отдельный запрос для каждого идентификатора случая. Есть ли способ упростить это? Я искал несколько дней ..

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. Заранее спасибо.

1 Ответ

0 голосов
/ 31 января 2019

Похоже, что это должно сработать, просто упорядочить, затем собрать по caseId и выполнить другое упорядочение по caseId после того, как вы получили частоты по caseId, но до UNWIND:

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 *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...