У меня есть таблица отправителей и получателей:
Table A:
+------+--------+
|sender|receiver|
+------+--------+
| A| B|
| B| C|
| C| D|
| D| A|
| E| B|
| A| D|
| E| C|
+------+--------+
Я хочу создать график с подключениями от «отправителя» к «получателю». Например, A -(EMAILS)-> B
Значения в столбце отправителя также могут отображаться в столбце получателя. Однако я не хочу, чтобы узлы A, B, C, D и E повторялись в моем графе. Они должны появляться только один раз в конечном графике.
Я попытался сделать это:
LOAD CSV WITH HEADERS FROM 'file:///graph' AS row
CREATE (:sender_node { sender: row.sender})
MATCH (n:sender_node)
WITH n.sender AS sender, collect(n) AS nodes
WHERE size(nodes) > 1
FOREACH (n in tail(nodes) | DELETE n)
LOAD CSV WITH HEADERS FROM 'file:///graph' AS row
CREATE (:receiver_node { receiver: row.receiver})
MATCH (n:receiver_node)
WITH n.receiver AS receiver, collect(n) AS nodes
WHERE size(nodes) > 1
FOREACH (n in tail(nodes) | DELETE n)
LOAD CSV WITH HEADERS FROM 'file:///graph' AS row
MATCH (from_var:sender_node {sender: row.sender}),(to_var:receiver_node {receiver:row.receiver})
CREATE (from_var)-[:EMAILS]->(to_var)
RETURN *
Я в основном удалил дубликаты отдельно в узлах отправителя и получателя. Но поскольку узлы A, B, C и D отображаются в столбцах «отправитель» и «получатель», они дважды отображаются на графике. Я хочу исправить эту часть.